2010-11-12 102 views
1
$arr1 = array('apple' => 1, 'mango'=>5, 'banana'=>3); 
$arr2 = array('apple' => 3, 'banana'=>2); 

我的結果數組應該是如何根據PHP中的索引合併2個數組?

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

我怎樣才能做到這一點?

+1

這不是一個真正的聯合,因爲它是一個索引增加。 – 2010-11-12 10:28:51

回答

7

你可以這樣做:

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

http://www.ideone.com/rDFFW

+2

爲什麼有人會投這個票?似乎是我的答案.... +1 – 2010-11-12 10:27:49

+0

布倫丹是對的。不幸的是,在PHP中沒有更好的方法。 > _ < – 2010-11-12 10:28:43

+0

謝謝你們,這樣做的工作 – sam 2010-11-12 10:33:38

0

如果你真的想要一個漂亮的一行那麼這將爲目前的問題做

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);