Fusionner et additionner des valeurs dans des tableaux associatifs plats
Problème :
Vous avez plusieurs tableaux associatifs et souhaitez les fusionner, en additionnant les valeurs associées aux clés correspondantes sans écraser les valeurs existantes. La fonction standard array_merge(), ainsi qu'une simple opération d'addition, ne fournissent pas le comportement souhaité.
Solution :
Pour fusionner des tableaux associatifs et additionner les valeurs de clés partagées, vous pouvez utiliser l'une des approches suivantes :
1. Boucle sur les clés combinées :
<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>
Cette approche parcourt les clés des tableaux combinés et accumule les valeurs de chaque clé dans le tableau $sums.
2. Utiliser le mappage :
<code class="php">$keys = array_fill_keys(array_keys($a1 + $a2), 0); $sums = array_map(function ($a1, $a2) { return $a1 + $a2; }, array_merge($keys, $a1), array_merge($keys, $a2));</code>
Ici, nous créons un tableau avec toutes les clés uniques des tableaux d'entrée, puis utilisons array_map() pour mapper une fonction qui additionne les valeurs associées à chaque clé dans le tableaux.
3. Fonction d'assistance :
Si vous devez fréquemment effectuer cette opération, vous pouvez créer une fonction d'assistance :
<code class="php">function array_sum_identical_keys() { $arrays = func_get_args(); $keys = array_keys(array_reduce($arrays, function ($keys, $arr) { return $keys + $arr; }, array())); $sums = array(); foreach ($keys as $key) { $sums[$key] = array_reduce($arrays, function ($sum, $arr) use ($key) { return $sum + @$arr[$key]; }); } return $sums; }</code>
Cette fonction accepte n'importe quel nombre de tableaux et additionne les valeurs des tableaux partagés. clés dans un nouveau tableau.
En utilisant l'une de ces approches, vous pouvez fusionner et additionner les valeurs des clés partagées dans des tableaux associatifs plats, ce qui donne le résultat souhaité. comportement.
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!