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
Libérer: 2024-11-03 16:08:30
original
991 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal