Fusionner des tableaux associatifs avec des valeurs additionnées pour les clés partagées
La fusion de plusieurs tableaux associatifs tout en combinant des valeurs pour des clés partagées peut être une tâche courante mais difficile . Cet article présente plusieurs solutions pour résoudre ce problème.
Fusion de tableaux avec sommation
L'objectif est de fusionner deux ou plusieurs tableaux associatifs plats (tableaux avec des clés de chaîne et non -valeurs de tableau) et additionnez les valeurs associées à des clés identiques. Cela diffère du comportement par défaut de la fonction array_merge() qui remplace les valeurs des clés en double.
Exemples
Considérez l'exemple suivant :
<code class="php">$a1 = array("a" => 2, "b" => 0, "c" => 5); $a2 = array("a" => 3, "b" => 9, "c" => 7, "d" => 10);</code>
Si nous devions utiliser array_merge() pour combiner ces tableaux, le résultat serait :
<code class="php">$a3 = array_merge($a1, $a2); print_r($a3); </code>
Sortie :
Array ( [a] => 3 [b] => 9 [c] => 7 [d] => 10 )
Comme vous pouvez le voir, les valeurs des clés partagées ( "a", "b", "c") ne sont pas additionnés mais remplacés.
Solutions personnalisées
Pour obtenir le résultat souhaité, nous pouvons utiliser une fonction personnalisée qui parcourt les clés des tableaux combinés et additionne les valeurs des clés partagées. Voici une telle implémentation :
<code class="php">$sums = array(); foreach (array_keys($a1 + $a2) as $key) { $sums[$key] = (isset($a1[$key]) ? $a1[$key] : 0) + (isset($a2[$key]) ? $a2[$key] : 0); }</code>
Sortie :
<code class="php">Array ( [a] => 5 [b] => 9 [c] => 12 [d] => 10 )</code>
Cette fonction nous permet de fusionner plusieurs tableaux avec des clés partagées et fournit les valeurs additionnées pour ces clés.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!