Maison >développement back-end >tutoriel php >Comment regrouper un tableau multidimensionnel par deux colonnes et sommer les valeurs pour chaque groupe ?

Comment regrouper un tableau multidimensionnel par deux colonnes et sommer les valeurs pour chaque groupe ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-06 01:16:02830parcourir

How do you group a multidimensional array by two columns and sum values for each group?

Regroupement des données d'un tableau multidimensionnel par deux colonnes et addition des valeurs pour chaque groupe

Considérons un tableau créé en combinant les résultats de deux requêtes de base de données distinctes, ressemblant à ce qui suit :

$arr1 = [
    ['part' => '1', 'address' => 'aaa', 'type' => '1', 'count' => 5],
    ['part' => '1', 'address' => 'bbb', 'type' => '1', 'count' => 5],
    ['part' => '1', 'address' => 'ccc', 'type' => '1', 'count' => 5],
    ['part' => '2', 'address' => 'aaa', 'type' => '1', 'count' => 5],
    ['part' => '2', 'address' => 'bbb', 'type' => '1', 'count' => 5],
    ['part' => '2', 'address' => 'ccc', 'type' => '2', 'count' => 5]
];

L'objectif est de regrouper ce tableau par colonnes « partie » et « type » et de calculer la somme des valeurs « compte » pour chaque groupe.

Pour accomplir Ceci, nous pouvons exploiter la fonction suivante :

<code class="php">function groupByPartAndType($input) {
  $output = Array();

  foreach($input as $value) {
    $output_element = &amp;$output[$value['part'] . "_" . $value['type']];
    $output_element['part'] = $value['part'];
    $output_element['type'] = $value['type'];
    !isset($output_element['count']) &amp;&amp; $output_element['count'] = 0;
    $output_element['count'] += $value['count'];
  }

  return array_values($output);
}</code>

Cette fonction parcourt le tableau d'entrée et remplit un tableau de sortie avec des éléments saisis par la combinaison de valeurs « partie » et « type ». Pour chaque élément de sortie, il définit les champs « partie », « type » et « compte » de manière appropriée, garantissant que le champ « compte » est initialisé à zéro s'il n'est pas déjà défini. La fonction renvoie un tableau des valeurs du tableau de sortie.

En appliquant cette fonction à $arr1, on obtient le résultat souhaité :

$arr2 = [
    ['part' => '1', 'type' => '1', 'count' => 15],
    ['part' => '2', 'type' => '1', 'count' => 10],
    ['part' => '2', 'type' => '2', 'count' => 5]
];

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