Maison  >  Article  >  développement back-end  >  Explication détaillée de la façon de regrouper des tableaux PHP par plusieurs champs

Explication détaillée de la façon de regrouper des tableaux PHP par plusieurs champs

WBOY
WBOYoriginal
2024-05-04 15:36:011170parcourir

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.

PHP 数组按多个字段分组的方法详解

Explication détaillée de la façon de regrouper des tableaux par plusieurs champs en PHP

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()

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()

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);

Sortie :

[
    ['name' => 'John', 'city' => 'New York', 'age' => 25],
    ['name' => 'Bob', 'city' => 'New York', 'age' => 28],
    ['name' => 'Jane', 'city' => 'London', 'age' => 30],
]

array_multisort()

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);

Sortie :

[
    '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]],
]

Fonction personnalisée🎜🎜Dans certains cas, vous pouvez définir votre propre fonction personnalisée pour regrouper les tableaux. Voici un exemple de fonction personnalisée qui regroupe un tableau par plusieurs champs : 🎜rrreee🎜Sortie : 🎜rrreee

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