$arr1 = array('apple' => 1, 'mango'=>5, 'banana'=>3);
$arr2 = array('apple' => 3, 'banana'=>2);
我的結果數組應該是如何根據PHP中的索引合併2個數組?
array('apple'=>4, 'mango'=>5,'banana'=>5);
我怎樣才能做到這一點?
$arr1 = array('apple' => 1, 'mango'=>5, 'banana'=>3);
$arr2 = array('apple' => 3, 'banana'=>2);
我的結果數組應該是如何根據PHP中的索引合併2個數組?
array('apple'=>4, 'mango'=>5,'banana'=>5);
我怎樣才能做到這一點?
你可以這樣做:
foreach($arr2 as $key=>$val) {
if(isset($arr1[$key])) {
$arr1[$key] += $val;
} else {
$arr1[$key] = $val;
}
}
爲什麼有人會投這個票?似乎是我的答案.... +1 – 2010-11-12 10:27:49
布倫丹是對的。不幸的是,在PHP中沒有更好的方法。 > _ < – 2010-11-12 10:28:43
謝謝你們,這樣做的工作 – sam 2010-11-12 10:33:38
如果你真的想要一個漂亮的一行那麼這將爲目前的問題做
array_walk($arr1, create_function('&$item,$key,$arr2', '$item += $arr2[$key] ;'),$arr2);
這使用的PHP技巧$ array ['non-existing-key']求值爲零。然而在現實生活中,我會寫這個作爲
function walk(&$item,$key,$arr2) {
$item = array_key_exists($key,$arr2) ? $item + $arr2[$key] : $item;
}
array_walk($arr1,'walk',$arr2);
這不是一個真正的聯合,因爲它是一個索引增加。 – 2010-11-12 10:28:51