Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 合并两个n维数组_Php_Arrays_Multidimensional Array - Fatal编程技术网

Php 合并两个n维数组

Php 合并两个n维数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有两个n维数组,我想合并它们。但是,我已经回顾过,它只适用于合并二维数组。我试图完成同样的事情,除了两个n维数组 例如: 阵列1: Array ( [''] => 'ID One' ['foo'] => Array ( [''] => 'ID Two' ['bar'] => 'ID Three' ) ) 阵列2: Array ( ['foo'] => Array ( ['bar']

我有两个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个嵌套数组。那么,如何合并数组1和数组2以形成所需的数组结果呢?

很方便地做到了这一点

涵盖这些案例。

方便地做到了这一点

涵盖案例。

尝试或

如果这两个函数都不是您想要的,那么使用递归函数仍然很容易,例如:

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

如果这两个函数都不是您想要的,那么使用递归函数仍然很容易,例如:

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

你不能直接使用
array\u merge\u recursive
?好的,现在感觉很愚蠢…你不能直接使用
array\u merge\u recursive
?好的,现在感觉很愚蠢。。。