1

我有两个要合并的 n 维数组。我已经回顾了这个问题,但是,它只适用于合并二维数组。我试图完成同样的事情,除了两个 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 个嵌套数组。那么,如何将 Array 1 和 Array 2 合并成 Desired Array Result 呢?

4

2 回答 2

4

方便,array_merge_recursive正是这样做的!

这个演示涵盖了这些案例。

于 2013-05-23T14:06:20.450 回答
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);
于 2013-05-23T14:06:47.627 回答