Php 在关联数组中插入新数组

Php 在关联数组中插入新数组,php,multidimensional-array,Php,Multidimensional Array,我试图在多维/关联数组中插入一个新数组。但是它不起作用,array\u push()也不起作用。我目前的代码如下: $myJson = array( array ( 'id' => 1, 'name' => 'Jane Doe', 'age' => 26 ), array ( 'id' => 2, 'name' => 'Josélito', 'age' => 35 ) ); $myAr =

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

我正在尝试我能找到的一切,但仍然没有解决方案。

您需要使用循环中的
$key
访问原始数组
$myJson
,以分配新值。默认情况下,foreach循环中的
$value
不是通过引用传递的

请执行以下操作:

foreach($myJson AS $key => $value) {
  $myJson[$key]['event'] = $myAr;
}

您还可以看到其他答案。

您需要使用循环中的
$key
访问原始数组
$myJson
,以分配新值。默认情况下,foreach循环中的
$value
不是通过引用传递的

请执行以下操作:

foreach($myJson AS $key => $value) {
  $myJson[$key]['event'] = $myAr;
}

您还可以看到其他答案。

您可以像这样在
循环中使用对数组的按引用传递。供参考


您可以像这样对
循环中的数组使用pass-by-reference。供参考


在新的php版本中,应该使用引用来编辑其内容

而不是做:

foreach($myJson AS $js) {
    $js['event'][] = $myAr;
}
你应该:

foreach($myJson AS &$js) {
    $js['event'][] = $myAr;
}


“为了能够直接修改循环中带&$value之前的数组元素。在这种情况下,值将通过引用分配。”

在新的php版本中,应使用引用编辑其内容

而不是做:

foreach($myJson AS $js) {
    $js['event'][] = $myAr;
}
你应该:

foreach($myJson AS &$js) {
    $js['event'][] = $myAr;
}

“为了能够直接修改循环中的数组元素,在$value之前加上&。在这种情况下,值将通过引用分配。”

通常使用array_push()函数在数组中推送新数据,但必须具有顺序索引:$arr[0],$ar[1]。。等等

不能在关联数组中直接使用它。但是看看你的数组结构,因为你的子数组有这种索引,你仍然可以使用array push,但是你必须指定索引。这是一个例子:

array_push($myJson["event"], $myAr);
希望对您更清楚。

通常使用array_push()函数在数组中推送新数据,但必须有一个顺序索引:$arr[0],$ar[1]。。等等

不能在关联数组中直接使用它。但是看看你的数组结构,因为你的子数组有这种索引,你仍然可以使用array push,但是你必须指定索引。这是一个例子:

array_push($myJson["event"], $myAr);


希望对您更清楚。

请分享您尝试过的内容。在没有对象的数组的循环中,您必须显式地使用reference&for值。否则该表将不会被修改。@Robert是否有理由使用
reference
而不是@Madhur所示的示例?因为两者都给出了相同的结果。在@Madhur中,他使用键寻址修改原始数组,两者都会执行相同的操作。引用的缺点是引用$value在循环后仍然保留。请分享您尝试过的内容。在有数组但没有对象的循环中,必须显式使用引用和for value。否则该表将不会被修改。@Robert是否有理由使用
reference
而不是@Madhur所示的示例?因为两者都给出了相同的结果。在@Madhur中,他使用键寻址修改原始数组,两者都将执行相同的操作。reference的缺点是reference$值在循环后仍然保留。工作非常完美@PravaGoopro高兴地帮助:)您可以将其视为已接受的答案(Green Tik:)是否有理由不使用该方法在<代码>通过引用< <代码> >下面显示?谢谢@PlayHardGoPro通过引用传递有可能无意中修改原始数组的其他内容(我们不希望这样)@MadhurBhaiya在这两种情况下,您都会修改数组的原始内容。这只是稍微安全一点,因为循环执行后仍保留引用,这可能导致难以跟踪错误。工作非常完美@PravaGoopro高兴地帮助:)您可以将其视为已接受的答案(Green Tik:)是否有理由不使用该方法在<代码>通过引用< <代码> >下面显示?谢谢@PlayHardGoPro通过引用传递有可能无意中修改原始数组的其他内容(我们不希望这样)@MadhurBhaiya在这两种情况下,您都会修改数组的原始内容。这只是稍微安全一点,因为执行循环后仍保留引用,这可能导致难以跟踪错误。是否有理由使用
引用
而不是Madhur提供的示例?这是
良好实践
还是与性能相关的东西?如果您使用copy(如Madhur的回答),您将在每个循环上创建新对象,即使您不使用它们。所以,是的,使用副本而不是引用是一个性能问题,即使您只是从数组中读取数据是否有理由使用
参考
而不是Madhur提供的示例?这是
良好实践
还是与性能相关的东西?如果您使用copy(如Madhur的回答),您将在每个循环上创建新对象,即使您不使用它们。所以,是的,使用副本而不是引用是一个性能问题,即使您只是从数组中读取数据