[英]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;
}
}
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.