在PHP中合并两个数组而不更改第一个数组的结构

时间:2017-01-14 22:44:44

标签: php arrays merge

$arr1 = array('foo'=>array('green'=>10, 'flowers'=>20), 'bar'=>20);
$arr2 = array('red'=>'roses', 'blue'=>'sky', foo=>array('flowers'=>15), 'bar'=>array('demo'=>'asdf'));

合并的理想结果:

array('foo'=>array('green'=>10, 'flowers'=>15), 'bar'=>array('demo'=>'asdf'));

我为此目的编写了一个递归函数,但我想知道在PHP中是否有更优雅的方法来实现这一目的。

这是我的功能:

function array_overwrite_recursive($arr1, $arr2) {
    foreach($arr1 As $k=>$v) {
        if(is_array($arr1[$k])) {
            $arr1[$k] = array_overwrite_recursive($arr1[$k], $arr2[$k]);
        } else {
            if(isset($arr2[$k])) $arr1[$k]=$arr2[$k];
        }
    }
    return $arr1;
}

0 个答案:

没有答案