如何在PHP中基于索引组合2个数组?

时间:2010-11-12 10:19:34

标签: php arrays

$arr1 = array('apple' => 1, 'mango'=>5, 'banana'=>3 );
$arr2 = array('apple' => 3, 'banana'=>2 );

我的结果数组应该是

array('apple'=>4, 'mango'=>5,'banana'=>5);

我该怎么做?

2 个答案:

答案 0 :(得分:7)

你可以这样做:

foreach($arr2 as $key=>$val) {
        if(isset($arr1[$key])) {
                $arr1[$key] += $val;
        } else {
                $arr1[$key] = $val;
        }   
}

http://www.ideone.com/rDFFW

答案 1 :(得分:0)

如果你真的想要一个漂亮的单行,那么这就可以解决当前的问题

array_walk($arr1, create_function('&$item,$key,$arr2', '$item += $arr2[$key] ;'),$arr2);

这使用$ array ['non-existing-key']的PHP技巧评估为零。但是在现实生活中我会把它写成

function walk(&$item,$key,$arr2) {
    $item = array_key_exists($key,$arr2) ? $item + $arr2[$key] : $item;

}

array_walk($arr1,'walk',$arr2);