我有两个如下所示的数组,想要将它们合并在一起,而不是将重复的键放入新数组中。
$array1:
Array
(
[0] => Array
(
[a] => Array
(
[p] => Array
(
[a] => 1
)
)
[a/s] => Array
(
[p] => Array
(
[o] => 1
)
)
[a/p] => Array
(
[p] => Array
(
[w] => 1
[e] => 1
[d] => 1
)
)
[a/u] => Array
(
[p] => Array
(
[w] => 1
[e_a] => 1
[d_a] => 1
)
)
)
)
$array2:
Array
(
[0] => Array
(
[a/x] => Array
(
[p] => Array
(
[a] => 1
)
)
[a/s] => Array
(
[p] => Array
(
[o] => 1
)
)
[a/p] => Array
(
[p] => Array
(
[w] => 1
[e] => 1
[d] => 1
)
)
[a/u] => Array
(
[p] => Array
(
[w] => 1
[e_a] => 1
[d_a] => 1
)
)
)
)
$result = array_merge_recursive($array1, $array2);
$结果:
Array
(
[0] => Array
(
[a] => Array
(
[p] => Array
(
[a] => 1
)
)
[a/s] => Array
(
[p] => Array
(
[o] => Array
(
[0] => 1
[1] => 1
)
)
)
[a/p] => Array
(
[p] => Array
(
[w] => Array
(
[0] => 1
[1] => 1
)
[e] => Array
(
[0] => 1
[1] => 1
)
[d] => Array
(
[0] => 1
[1] => 1
)
)
)
[a/u] => Array
(
[p] => Array
(
[w] => Array
(
[0] => 1
[1] => 1
)
[e_a] => Array
(
[0] => 1
[1] => 1
)
[d_a] => Array
(
[0] => 1
[1] => 1
)
)
)
[a/x] => Array
(
[p] => Array
(
[a] => 1
)
)
)
)
我该如何让它看起来像这样?
Array
(
[0] => Array
(
[a] => Array
(
[p] => Array
(
[a] => 1
)
)
[a/s] => Array
(
[p] => Array
(
[o] => 1
)
)
[a/p] => Array
(
[p] => Array
(
[w] => 1
[e] => 1
[d] => 1
)
)
[a/u] => Array
(
[p] => Array
(
[w] => 1
[e_a] => 1
[d_a] => 1
)
)
[a/x] => Array
(
[p] => 1
)
)
)
我是否以错误的方式处理这个问题,或者有什么方法可以解决这个问题?欢迎举例!
谢谢
最佳答案
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;
}
关于php - 合并2个没有重复键的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4137140/