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

Comment additionner efficacement les valeurs de colonnes dans des tableaux PHP multidimensionnels ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-29 17:05:11654parcourir

How to Efficiently Sum Column Values in Multi-Dimensional PHP Arrays?

Comment additionner les valeurs en colonnes dans des tableaux multidimensionnels

Dans les tableaux multidimensionnels, résumer les valeurs le long des colonnes est une tâche courante. Voici comment procéder, compte tenu du défi des jeux de clés associatives dynamiques :

Solution de cas général avec array_walk_recursive

En utilisant array_walk_recursive, vous pouvez résumer de manière cohérente les colonnes quelle que soit la structure des clés. :

$final = array();

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

array_column() pour Exact Clés

À partir de PHP 5.5, vous pouvez utiliser array_column pour résumer efficacement des colonnes spécifiques :

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

Somme totale pour tous les ensembles de clés

Si vous voulez la somme globale de tous les tableaux internes avec les clés correspondantes (comme dans la sortie souhaitée), utilisez ceci approche :

$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

Une approche plus avancée utilisant array_column consiste à identifier toutes les clés uniques, puis à résumer :

$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