Maison >développement back-end >tutoriel php >Comment fusionner plusieurs tableaux associatifs et sommer les valeurs des clés partagées en PHP ?

Comment fusionner plusieurs tableaux associatifs et sommer les valeurs des clés partagées en PHP ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-03 16:08:30944parcourir

How to Merge Multiple Associative Arrays and Sum Values of Shared Keys in PHP?

Comment fusionner plusieurs tableaux associatifs et additionner les valeurs de clés partagées

Le défi

Comme vous l'avez peut-être rencontré, le array_merge( ) en PHP écrase les valeurs des clés partagées lors de la combinaison de plusieurs tableaux. Cela peut être problématique lorsque vous devez fusionner des tableaux et additionner les valeurs des clés partagées.

Une solution

Pour relever ce défi, nous pouvons créer une fonction personnalisée ou exploiter les opérations de tableau pour obtenir notre comportement souhaité. Explorons quelques approches possibles :

Utilisation d'une fonction personnalisée

<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 un nombre arbitraire de tableaux comme arguments et renvoie un tableau associatif avec les valeurs combinées. clés et valeurs additionnées.

Utilisation de la suppression d'erreurs

<code class="php">$sums = array();
foreach (array_keys($a1 + $a2) as $key) {
    $sums[$key] = @($a1[$key] + $a2[$key]);
}</code>

Cette technique exploite l'opérateur de suppression d'erreur (@) pour vérifier l'existence de clés dans les deux tableaux avant effectuer l'addition.

Utilisation des mappages de tableaux

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

Cette approche crée un mappage à l'aide de array_fill_keys() puis utilise array_map() pour ajouter les valeurs associées au clés partagées.

Combinaison de solutions

<code class="php">$sums = array_fill_keys(array_keys($a1 + $a2), 0);
array_walk($sums, function (&amp;$value, $key, $arrs) { $value = @($arrs[0][$key] + $arrs[1][$key]); }, array($a1, $a2));</code>

Cette combinaison combine la technique de suppression d'erreurs avec array_walk() pour parcourir les clés et effectuer l'addition.

Conclusion

En fonction de vos besoins spécifiques, vous pouvez choisir la méthode la plus appropriée pour fusionner plusieurs tableaux et additionner les valeurs des clés partagées. Qu'il s'agisse d'utiliser une fonction personnalisée, une suppression d'erreurs, des mappages de tableaux ou une combinaison de ceux-ci, ces solutions offrent un moyen concis et efficace d'obtenir le résultat souhaité.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn