Maison >développement back-end >tutoriel php >Comment additionner les valeurs en colonnes dans des tableaux PHP multidimensionnels ?

Comment additionner les valeurs en colonnes dans des tableaux PHP multidimensionnels ?

DDD
DDDoriginal
2024-12-27 09:40:12503parcourir

How to Sum Columnar Values in Multi-Dimensional PHP Arrays?

Ajout de valeurs en colonnes dans des tableaux multidimensionnels

Vous souhaitez additionner les valeurs associées à des clés spécifiques dans un tableau multidimensionnel avec différents jeux de clés. Considérez l'entrée suivante :

Array
(
    [0] => Array
        (
            [gozhi] => 2
            [uzorong] => 1
            [ngangla] => 4
            [langthel] => 5
        )

    [1] => Array
        (
            [gozhi] => 5
            [uzorong] => 0
            [ngangla] => 3
            [langthel] => 2
        )

    [2] => Array
        (
            [gozhi] => 3
            [uzorong] => 0
            [ngangla] => 1
            [langthel] => 3
        )
)

Le résultat souhaité est :

Array
(
    [gozhi] => 10
    [uzorong] => 1
    [ngangla] => 8
    [langthel] => 10
)

Pour y parvenir, envisagez les approches suivantes :

array_walk_recursive()

Pour une solution de cas général, utilisez array_walk_recursive():

$final = array();

array_walk_recursive($input, function($item, $key) use (&$final){
    $final[$key] = isset($final[$key]) ?  $item + $final[$key] : $item;
});

array_column()

Pour des clés spécifiques (par exemple, "gozhi"), utilisez array_column() (disponible depuis PHP 5.5) :

array_sum(array_column($input, 'gozhi'));

Pour les tableaux avec des clés identiques

Si tous les tableaux internes ont la même clés :

$final = array_shift($input);

foreach ($final as $key => &$value){
   $value += array_sum(array_column($input, $key));
}    

unset($value);

Solution de cas général avec array_column()

Obtenir toutes les clés uniques, puis additionner pour chacune :

$final = array();

foreach($input as $value)
    $final = array_merge($final, $value);

foreach($final as $key => &$value)
    $value = array_sum(array_column($input, $key));

unset($value);

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