我想要合并两个n维数组。我已经回顾了this question,但它只适用于合并二维数组。我试图完成同样的事情,除了两个n维数组。
所以,例如:
数组1:
Array (
[''] => 'ID One'
['foo'] => Array (
[''] => 'ID Two'
['bar'] => 'ID Three'
)
)
数组2:
Array (
['foo'] => Array (
['bar'] => Array (
['baz'] => 'ID Four'
)
)
['bax'] => 'ID Five'
)
所需的数组结果:
Array (
[''] => 'ID One'
['foo'] => Array (
[''] => 'ID Two'
['bar'] => Array (
[''] => 'ID Three'
['baz'] => 'ID Four'
)
)
['bax'] => 'ID Five'
)
虽然这是我想要实现的目标的演示,但当它被用于某些Web应用程序时,它完全有可能拥有10个,甚至15个嵌套数组。那么,如何合并阵列1和阵列2以形成所需的阵列结果?
答案 0 :(得分:5)
方便的是,array_merge_recursive
正是这样做的!
This demo涵盖了案例。
答案 1 :(得分:2)
尝试array_merge_recursive()
或array_replace_recursive()
。
如果这些函数都没有达到你想要的效果,那么使用递归函数仍然很容易,例如:
function merge($a, $b) {
foreach ($b as $key => $value) {
if (!is_array($value) {
$a[$key] = $value;
} else if (isset($a[$key])) {
$a[$key] = merge($a[$key], $value);
} else {
$a[$key] = $value;
}
}
return $a;
}
$merged = merge($a, $b);