我有 2 个数组嵌套在来自外部源的 4 或 5 层中(因此,如果可能的话,我不能也不想手动更改结构)。我简化了下面的问题,但请记住,结构超出了我的控制范围,因此我需要一个通用的解决方案。
$x = array (
'one' =>
array (
'two' => 2,
'three' =>
array (
0 => 3,
),
),
);
$y = array (
'one' =>
array (
'three' =>
array (
0 => 3,
),
'four' => 4,
'five' => 5,
),
'six' => 6
);
我想合并这些并得到:
array (
'one' =>
array (
'two' => 2,
'three' =>
array (
0 => 3,
),
'four' => 4,
'five' => 5,
),
'six' => 6
)
我已经尝试了以下所有方法,但没有一个能够准确地给出上述内容:
var_dump($x+$y);
var_dump(array_merge($x,$y));
var_dump(array_merge_recursive($x,$y));
var_dump($y+$x);
var_dump(array_merge($y,$x));
var_dump(array_merge_recursive($y,$x));
所以,我想我需要一些自定义代码来进行合并。会是什么?保持通用和简单。
最佳答案
function array_merge_recursive_unique($array1, $array2) {
if (empty($array1)) return $array2; //optimize the base case
foreach ($array2 as $key => $value) {
if (is_array($value) && is_array(@$array1[$key])) {
$value = array_merge_recursive_unique($array1[$key], $value);
}
$array1[$key] = $value;
}
return $array1;
}
发帖前请搜索。这是 merge-2-arrays-with-no-duplicated-keys 的重复项
关于php - 如何在 PHP 中合并 2 个带有数字索引的数组并替换值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15209475/