合并两个n维数组

时间:2013-05-23 14:01:50

标签: php arrays multidimensional-array

我想要合并两个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以形成所需的阵列结果?

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);