Php 如何使用唯一键递归合并数组?

Php 如何使用唯一键递归合并数组?,php,arrays,merge,associative-array,Php,Arrays,Merge,Associative Array,我创建的数组如下所示: foreach ($array as $key => $value) { $array1[$value->getUuid()][$value->getFields()->getName()] = $value->getContent(); } 结果是1: array:2 [▼ "d8ab80f4f6" => array:16 [▶] 9087785727 => array:16 [▶]

我创建的数组如下所示:

foreach ($array as $key => $value) {
          $array1[$value->getUuid()][$value->getFields()->getName()] = $value->getContent();
        }
结果是1:

array:2 [▼
  "d8ab80f4f6" => array:16 [▶]
  9087785727 => array:16 [▶]
]
我以稍微不同的方式创建了另一个数组,array2:

array:2 [▼
  "d8ab80f4f6" => array:3 [▶]
  9087785727 => array:3 [▶]
]
现在我要合并这些阵列:

$output = array_merge_recursive($array1,$array2);
输出为:

array:3 [▼
  "d8ab80f4f6" => array:19 [▶]
  0 => array:3 [▶]
  1 => array:16 [▶]
]
但我预计结果是:

array:3 [▼
  "d8ab80f4f6" => array:19 [▶]
  "9087785727" => array:19 [▶]
]

您可以将next
foreach循环
一起使用:

foreach($ar1 as $key=>&$subar){
    $subar = array_merge($subar,$ar2[$key]); 
}

array\u merge
array\u merge\u recursive
对待字符串键与数字键不同:

如果输入数组具有相同的字符串键,那么这些键的值将合并到一个数组中,并且这是递归完成的,因此如果其中一个值是数组本身,则函数也会将其与另一个数组中的相应项合并。但是,如果数组具有相同的数字键,则后面的值不会覆盖原始值,而是会追加

这就是这里发生的事情。键
9087785727
为数字,因此不会合并这些条目

因此,您需要编写自己的循环

$output = [];
foreach ($array1 as $key => $value) {
    $output[$key] = array_merge($value, $array2[$key]);
}

我用我的代码尝试了这个解决方案,但输出只是其中一个的内容array@fala不可能。您是否使用了
&
?,作为well@AksenP您没有对关联数组调用
array\u merge()
。@Barmar,您too@AksenP这就是重点。当任何键都是数字时,即使它们不像普通索引数组那样是连续的,它也不能按预期工作。