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

mon tableau de résultat devrait êtreComment combiner 2 tableaux basés sur des index en PHP?

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

Comment puis-je faire?

+1

Ce n'est pas vraiment une moissonneuse-batteuse, mais une addition par index. –

Répondre

7

Vous pouvez faire:

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

http://www.ideone.com/rDFFW

+2

Pourquoi quelqu'un a-t-il voté? Semble être la réponse à moi .... +1 –

+0

Brendan a raison. Malheureusement, il n'y a pas de meilleur moyen de le faire en PHP. > _ < –

+0

Merci les gars, qui a fait le travail – sam

0

Si vous voulez vraiment un joli one-liner alors ce serait faire pour le problème actuel

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

Il utilise l'astuce de PHP $ array ['non-existing-key'] évaluant à zéro. Cependant dans la vraie vie, j'aurais écrit cela comme

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

} 

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