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

WBOY
Libérer: 2024-05-04 15:36:01
original
1169 Les gens l'ont consulté

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);
Copier après la connexion

输出:

[
    'New York' => [
        ['name' => 'John', 'city' => 'New York'],
        ['name' => 'Bob', 'city' => 'New York'],
    ],
    'London' => [
        ['name' => 'Jane', 'city' => 'London'],
    ],
]
Copier après la connexion

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);
Copier après la connexion

Sortie :

[
    ['name' => 'John', 'city' => 'New York', 'age' => 25],
    ['name' => 'Bob', 'city' => 'New York', 'age' => 28],
    ['name' => 'Jane', 'city' => 'London', 'age' => 30],
]
Copier après la connexion

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);
Copier après la connexion

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]],
]
Copier après la connexion
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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal