Maison >développement back-end >tutoriel php >Comment calculer efficacement les totaux de colonnes dans des tableaux multidimensionnels irréguliers ?

Comment calculer efficacement les totaux de colonnes dans des tableaux multidimensionnels irréguliers ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-24 14:45:14663parcourir

How to Efficiently Calculate Column Totals in Irregular Multi-Dimensional Arrays?

Comment calculer les totaux de colonnes dans un tableau multidimensionnel

Considérons un tableau multidimensionnel où les éléments sont disposés en lignes et en colonnes, mais les jeux de clés peuvent varier de manière dynamique. La tâche consiste à calculer la somme des valeurs dans chaque colonne, quelles que soient les variations de clé.

Méthode Array_Walk_Recursive

Pour une solution générale où les tableaux internes peuvent avoir des clés uniques, utiliser 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 Méthode

Si des valeurs de clé spécifiques doivent être additionnées, array_column() peut être utilisée :

array_sum(array_column($input, 'gozhi')); // Sums the 'gozhi' column

Pour les tableaux internes uniformes

Si tous les tableaux internes ont les mêmes clés, obtenez la structure de clé initiale :

$final = array_shift($input);

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

unset($value);

Général Cas avec Array_Column

Extraire les clés uniques et effectuer des sommes de colonnes :

$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