$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;
}