我这样创建数组:
foreach ($array as $key => $value) {
$array1[$value->getUuid()][$value->getFields()->getName()] = $value->getContent();
}
结果为array1:
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 [▶]
]
[array_merge
和array_merge_recursive
对字符串键和数字键的处理不同:
如果输入数组具有相同的字符串键,则这些键的值将合并到一个数组中,并且这是递归完成的,因此,如果值之一是数组本身,则该函数会将其与另一个数组中的相应条目。但是,如果数组具有相同的数字键,则后面的值将不会覆盖原始值,而是将其附加。
这就是这里正在发生的事情。键9087785727
是数字,因此不会合并这些条目。
所以您需要编写自己的循环。
$output = [];
foreach ($array1 as $key => $value) {
$output[$key] = array_merge($value, $array2[$key]);
}