Maison > développement back-end > tutoriel php > Comment fusionner et additionner les valeurs des clés partagées dans des tableaux associatifs plats ?

Comment fusionner et additionner les valeurs des clés partagées dans des tableaux associatifs plats ?

Patricia Arquette
Libérer: 2024-11-03 19:12:03
original
716 Les gens l'ont consulté

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

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

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

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

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!

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