Comment regrouper un tableau PHP par plusieurs champs ? array_column() : regroupez par le champ spécifié et extrayez la valeur du champ comme clé. array_multisort() : Trie un tableau par plusieurs champs, en regroupant les lignes en double adjacentes. Fonction personnalisée : définissez une fonction personnalisée et utilisez une boucle pour regrouper les tableaux par champs spécifiés.
Le regroupement de tableaux est une opération courante pour le traitement d'ensembles de données complexes. Souvent, vous devez regrouper les éléments du tableau en fonction d'un ou plusieurs champs pour faciliter le traitement ou l'agrégation des données. PHP propose plusieurs façons d'y parvenir. La fonction
array_column()
est utilisée pour extraire la valeur d'une colonne spécifique d'un tableau. Il peut être utilisé pour regrouper des tableaux en extrayant les valeurs de champ utilisées pour le regroupement et en les utilisant comme clés. array_column()
函数用于从数组中提取特定列的值。它可以用来对数组进行分组,方法是提取用于分组的字段值并将其作为键。
$data = [ ['name' => 'John', 'city' => 'New York'], ['name' => 'Jane', 'city' => 'London'], ['name' => 'Bob', 'city' => 'New York'], ]; // 按城市分组 $grouped = array_column($data, 'city'); // 输出结果 print_r($grouped);
输出:
[ 'New York' => [ ['name' => 'John', 'city' => 'New York'], ['name' => 'Bob', 'city' => 'New York'], ], 'London' => [ ['name' => 'Jane', 'city' => 'London'], ], ]
array_multisort()
$data = [ ['name' => 'John', 'city' => 'New York', 'age' => 25], ['name' => 'Jane', 'city' => 'London', 'age' => 30], ['name' => 'Bob', 'city' => 'New York', 'age' => 28], ]; // 按城市和年龄分组 array_multisort(array_column($data, 'city'), SORT_ASC, array_column($data, 'age'), SORT_ASC, $data); // 输出结果 print_r($data);
[ ['name' => 'John', 'city' => 'New York', 'age' => 25], ['name' => 'Bob', 'city' => 'New York', 'age' => 28], ['name' => 'Jane', 'city' => 'London', 'age' => 30], ]
array_multisort()
La fonction est utilisée pour trier les tableaux selon plusieurs champs. Il peut également être utilisé pour regrouper des tableaux en triant le tableau selon plusieurs champs, puis en regroupant les lignes en double adjacentes. function group_by_fields(array $data, array $fields) { $grouped = []; foreach ($data as $row) { $key = ''; foreach ($fields as $field) { $key .= $row[$field] . ','; } $key = trim($key, ','); $grouped[$key][] = $row; } return $grouped; } $data = [ ['name' => 'John', 'city' => 'New York', 'age' => 25], ['name' => 'Jane', 'city' => 'London', 'age' => 30], ['name' => 'Bob', 'city' => 'New York', 'age' => 28], ]; // 按城市和年龄分组 $grouped = group_by_fields($data, ['city', 'age']); // 输出结果 print_r($grouped);
[ 'New York,25' => [['name' => 'John', 'city' => 'New York', 'age' => 25]], 'New York,28' => [['name' => 'Bob', 'city' => 'New York', 'age' => 28]], 'London,30' => [['name' => 'Jane', 'city' => 'London', 'age' => 30]], ]
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!