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

Comment additionner les valeurs de colonnes dans des tableaux multidimensionnels avec des clés dynamiques en PHP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-16 22:03:111000parcourir

How to Sum Column Values in Multi-Dimensional Arrays with Dynamic Keys in PHP?

Somme des valeurs de colonnes dans des tableaux multidimensionnels

Question :

Comment pouvez-vous calculer la somme des valeurs de colonne dans un tableau multidimensionnel, où les clés associatives sont dynamique ?

Réponse :

Pour additionner les valeurs de colonne dans un tableau multidimensionnel avec des clés dynamiques, vous pouvez utiliser array_walk_recursive(). Il fournit une solution générale pour les cas où chaque tableau interne a des clés uniques.

$final = array();

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

Pour des clés spécifiques, array_column() est une option appropriée, disponible depuis PHP 5.5.

array_sum(array_column($input, 'gozhi')); // for key 'gozhi'

Pour obtenir la somme totale des colonnes avec les mêmes clés, vous pouvez extraire le premier tableau interne comme base, additionner les valeurs de chaque clé en utilisant array_column(), et ajoutez-les à la base :

$final = array_shift($input);

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

unset($value);

Pour une solution générale utilisant array_column(), pensez d'abord à obtenir toutes les clés uniques, puis à calculer la somme pour chacun :

$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