在关联数组中插入一个新数组

时间:2018-09-17 13:24:35

标签: php multidimensional-array

我试图在多维/关联数组中插入一个新数组。但是它不起作用,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
     );
  )

我正在尽我所能,但仍然没有解决办法。

4 个答案:

答案 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);

希望对您来说更清楚