Problème :
Ce problème implique un tableau avec données provenant de plusieurs requêtes de base de données dans différentes bases de données. L'objectif est de regrouper les éléments du tableau en fonction de deux valeurs de colonne ("partie" et "type") et de calculer la somme d'une troisième colonne ("compte") pour chaque groupe.
Exemple de tableau :
<code class="php">$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] ];</code>
Sortie souhaitée :
<code class="php">$arr2 = [ ['part' => '1', 'type' => '1', 'count' => 15], ['part' => '2', 'type' => '1', 'count' => 10], ['part' => '2', 'type' => '2', 'count' => 5] ];</code>
Solution :
Pour regrouper les éléments du tableau et additionnez les valeurs "count", la fonction suivante peut être utilisée :
<code class="php">function groupByPartAndType($input) { $output = Array(); foreach($input as $value) { $output_element = &$output[$value['part'] . "_" . $value['type']]; $output_element['part'] = $value['part']; $output_element['type'] = $value['type']; !isset($output_element['count']) && $output_element['count'] = 0; $output_element['count'] += $value['count']; } return array_values($output); }</code>
Cette fonction parcourt le tableau d'entrée, identifiant les valeurs "part" et "type" pour chaque élément. Il utilise ensuite ces valeurs comme clés pour créer ou récupérer des éléments de sortie. Pour chaque clé, la fonction initialise un champ "count" s'il n'existe pas et l'incrémente avec la valeur du champ "count" de cet élément. Enfin, il renvoie un tableau contenant les éléments groupés.
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!