php递归数组合并

时间:2013-10-21 13:16:10

标签: php arrays multidimensional-array

我有2个阵列:

$bigArr = array(
    'simple'=>1
    'advanced'=>array(
        'advanceSimple'=>1,
        'advanceadvance'=>array(
            'simple'=>1
        )  
    )
)

$overide = array(
    'advanced'=>array(
        'advanceSimple'=>2,
        'extra'=>5
    )
)

这两者的合并应该是:

$bigArr = array(
    'simple'=>1
    'advanced'=>array(
        'advanceSimple'=>2,
        'extra'=>5,
        'advanceadvance'=>array(
            'simple'=>1
        )  
    )
)

你看到小阵列的覆盖将仅覆盖密钥所在的位置,并且会在不存在的位置添加数据。

我尝试了许多递归迭代器和循环的方法,但仍然没有。

您有任何想法或类似的解决方法。

2 个答案:

答案 0 :(得分:1)

$bigArr = array(
    'simple'=>1,
    'advanced'=>array(
        'advanceSimple'=>1,
        'advanceadvance'=>array(
            'simple'=>1
        )  
    )
);
$overide = array(
    'advanced'=>array(
        'advanceSimple'=>2,
        'extra'=>5
    )
);
$res = array_merge_recursive($bigArr,$overide);

是你需要的吗?

答案 1 :(得分:0)

回答PHP 5.3 +

$bigArr = array(
    'simple'=>1,
    'advanced'=>array(
        'advanceSimple'=>1,
        'advanceadvance'=>array(
            'simple'=>1
        )
    )
);
$overide = array(
    'advanced'=>array(
        'advanceSimple'=>2,
        'extra'=>5
    )
);
$array = array_replace_recursive($bigArr,$overide);
echo "<pre>";
print_R($array);