简体   繁体   English

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

[英]How to combine 2 arrays based on indexes in PHP?

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

my result array should be 我的结果数组应该是

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

How can i do that? 我怎样才能做到这一点?

You can do: 你可以做:

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

http://www.ideone.com/rDFFW http://www.ideone.com/rDFFW

If you really want a pretty one-liner then this would do for the present problem 如果您真的想要一个漂亮的单线,那将解决当前的问题

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

This uses the PHP trick of $array['non-existing-key'] evaluating to zero. 这使用$ array ['non-existing-key'] PHP技巧计算为零。 However in real life I would have written this as 但是在现实生活中,我会这样写

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

}

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM