如何将值添加到通过 AJAX 获得的数组内的数组
How to add values to an array inside an array obtained through AJAX
在我的 PHP 文件中,我收到了总共 4 个变量 $data、$date、$shift 和 $val1。
$data 是一个数组,其他 3 个是日期和 2 个通过 AJAX 获得的字符串没有问题。
我要做的是将这 3 个值插入到我的 $data 变量中。
我尝试使用数组合并,以及具有多个实例的 For each 循环,但到目前为止没有成功。
我这样获得变量:
if (isset($_POST['date'])){
$date = $_POST['date'];
$date = json_encode($date);
$date = json_decode($date);
}
if (isset($_POST['shift'])){
$shift = $_POST['shift'];
$shift = json_encode($shift);
$shift = json_decode($shift);
}
if (isset($_POST['val1'])){
$val1 = $_POST['val1'];
$val1 = json_encode($val1);
$val1 = json_decode($val1);
}
if (isset($_POST['data'])){
$dat = $_POST['data'];
$data = json_decode($dat, true);
}
$values = array($date,$shift,$val1);
$r = (array_merge($data, $values));
我的数据数组看起来像这样:
Array (
[0] => Array (
[data] => Array (
[0] => Array (
[0] => 1
[1] => 2
[2] => 3
[3] => 0
[4] => Mat1
[5] => Box1
[6] => 100
[7] => 100
[8] => Piece1
[9] => Loc1
[10] => Mach1
[11] => 1000
[12] => Accepted
)
)
)
[1] => 2019-04-09
[2] => First
[3] => Value1
)
但是我想要实现的是:
Array (
[0] => Array (
[data] => Array (
[0] => Array (
[0] => 1
[1] => 2
[2] => 3
[3] => 0
[4] => Mat1
[5] => Box1
[6] => 100
[7] => 100
[8] => Piece 1
[9] => Suc1
[10] => Mach1
[11] => 1000
[12] => Accepted
[13] => 2019-04-09
[14] => First
[15] => Value1
)
)
)
)
我做错了什么?或者我怎样才能实现我想要做的事情?
编辑:因为我可以在我的数组中获得多个数组,所以像这样
Array (
[0] => Array (
[data] => Array (
[0] => Array (...)
[1] => Array (...)
[2] => Array (...)
[3] => Array (...)
)
)
)
我刚刚将这段代码添加到@HelgeB 的回答中,我把它留在这里以防将来有人需要它。
$count = count($data[0]['data']);
for ($i=0; $i < $count ; $i++) {
$data[0]['data'][$i][] = $date;
$data[0]['data'][$i][] = $shift;
$data[0]['data'][$i][] = $val1;
}
据我从您的合并输出中可以看出,您的 $data
数组结构是 $data[0]['data'][0] = [1,2,3,...,'Accepted']
。
因此,在我看来,您需要准确地在 $data[0]['data'][0]
级别上插入值才能获得结果。
实现此目的的最简单方法是:
$data[0]['data'][0][] = $date;
$data[0]['data'][0][] = $shift;
$data[0]['data'][0][] = $val1;
如果你想使用你的合并方法,你需要像这样在正确的级别上合并:
$r = [0 => ['data' => [0 => (array_merge($data[0]['data'][0], $values))]]];
在我的 PHP 文件中,我收到了总共 4 个变量 $data、$date、$shift 和 $val1。 $data 是一个数组,其他 3 个是日期和 2 个通过 AJAX 获得的字符串没有问题。 我要做的是将这 3 个值插入到我的 $data 变量中。
我尝试使用数组合并,以及具有多个实例的 For each 循环,但到目前为止没有成功。
我这样获得变量:
if (isset($_POST['date'])){
$date = $_POST['date'];
$date = json_encode($date);
$date = json_decode($date);
}
if (isset($_POST['shift'])){
$shift = $_POST['shift'];
$shift = json_encode($shift);
$shift = json_decode($shift);
}
if (isset($_POST['val1'])){
$val1 = $_POST['val1'];
$val1 = json_encode($val1);
$val1 = json_decode($val1);
}
if (isset($_POST['data'])){
$dat = $_POST['data'];
$data = json_decode($dat, true);
}
$values = array($date,$shift,$val1);
$r = (array_merge($data, $values));
我的数据数组看起来像这样:
Array (
[0] => Array (
[data] => Array (
[0] => Array (
[0] => 1
[1] => 2
[2] => 3
[3] => 0
[4] => Mat1
[5] => Box1
[6] => 100
[7] => 100
[8] => Piece1
[9] => Loc1
[10] => Mach1
[11] => 1000
[12] => Accepted
)
)
)
[1] => 2019-04-09
[2] => First
[3] => Value1
)
但是我想要实现的是:
Array (
[0] => Array (
[data] => Array (
[0] => Array (
[0] => 1
[1] => 2
[2] => 3
[3] => 0
[4] => Mat1
[5] => Box1
[6] => 100
[7] => 100
[8] => Piece 1
[9] => Suc1
[10] => Mach1
[11] => 1000
[12] => Accepted
[13] => 2019-04-09
[14] => First
[15] => Value1
)
)
)
)
我做错了什么?或者我怎样才能实现我想要做的事情?
编辑:因为我可以在我的数组中获得多个数组,所以像这样
Array (
[0] => Array (
[data] => Array (
[0] => Array (...)
[1] => Array (...)
[2] => Array (...)
[3] => Array (...)
)
)
)
我刚刚将这段代码添加到@HelgeB 的回答中,我把它留在这里以防将来有人需要它。
$count = count($data[0]['data']);
for ($i=0; $i < $count ; $i++) {
$data[0]['data'][$i][] = $date;
$data[0]['data'][$i][] = $shift;
$data[0]['data'][$i][] = $val1;
}
据我从您的合并输出中可以看出,您的 $data
数组结构是 $data[0]['data'][0] = [1,2,3,...,'Accepted']
。
因此,在我看来,您需要准确地在 $data[0]['data'][0]
级别上插入值才能获得结果。
实现此目的的最简单方法是:
$data[0]['data'][0][] = $date;
$data[0]['data'][0][] = $shift;
$data[0]['data'][0][] = $val1;
如果你想使用你的合并方法,你需要像这样在正确的级别上合并:
$r = [0 => ['data' => [0 => (array_merge($data[0]['data'][0], $values))]]];