我试图在多维/关联数组中插入一个新数组。但是它不起作用,array_push()
都不起作用。我当前的代码如下:
$myJson = array(
array (
'id' => 1,
'name' => 'Jane Doe',
'age' => 26
),
array (
'id' => 2,
'name' => 'Josélito',
'age' => 35
)
);
$myAr = array(
'id' => 5,
'channel' => 'pimbaTv',
'followers' => 15014
);
foreach($myJson AS $js) {
$js['event'][] = $myAr;
//$js['event'] = $myAr;
}
所以我会有这样的东西:
array (
'id' => 1,
'name' => 'Jane Doe',
'age' => 26,
'event' => array(
'id' => 5,
'channel' => 'pimbaTv',
'followers' => 15014
);
),
array (
'id' => 2,
'name' => 'Josélito',
'age' => 35,
'event' => array(
'id' => 5,
'channel' => 'pimbaTv',
'followers' => 15014
);
)
我正在尽我所能,但仍然没有解决办法。
答案 0 :(得分:2)
您可以像这样在for
循环中使用按引用传递数组。供参考PHP Pass by reference in foreach
foreach($myJson AS &$js) {
$js['event'] = $myAr;
}
答案 1 :(得分:1)
您需要从循环中使用$myJson
访问原始数组$key
,以分配新值。默认情况下,foreach循环中的$value
不会通过引用传递。
执行以下操作:
foreach($myJson AS $key => $value) {
$myJson[$key]['event'] = $myAr;
}
您也可以看到其他答案,utilizing passing by reference。
答案 2 :(得分:1)
在新的php版本中,您应该使用引用来编辑其内容。
代替:
foreach($myJson AS $js) {
$js['event'][] = $myAr;
}
您应该这样做:
foreach($myJson AS &$js) {
$js['event'][] = $myAr;
}
http://php.net/manual/en/control-structures.foreach.php
“为了能够在循环中直接修改$ value之前的&,以便在循环内修改数组元素。在这种情况下,值将通过引用分配。”
答案 3 :(得分:1)
array_push()函数通常用于在数组中推送新数据,但必须具有顺序索引:$ arr [0],$ ar [1] ..等。
您不能直接在关联数组中使用它。但是考虑到数组结构,由于子数组具有这种索引,您仍然可以使用数组推入,但必须指定索引。这是一个示例:
array_push($myJson["event"], $myAr);
希望对您来说更清楚