Maison >développement back-end >tutoriel php >Comment trier efficacement un tableau PHP multidimensionnel par champ imbriqué ?

Comment trier efficacement un tableau PHP multidimensionnel par champ imbriqué ?

DDD
DDDoriginal
2024-12-02 00:52:14805parcourir

How to Sort a Multidimensional PHP Array by a Nested Field Efficiently?

Comment trier efficacement un tableau PHP multidimensionnel par un champ imbriqué ?

En PHP, il est possible de rencontrer des tableaux multidimensionnels représentant des données tabulaires , où chaque élément contient un tableau associatif de paires champ-valeur. La tâche de trier ces données par un champ spécifique dans les tableaux imbriqués peut être réalisée facilement.

Considérez le tableau similaire à une base de données suivant :

$data = [
    [
        'name' => 'Sony TV',
        'price' => 600.00
    ],
    [
        'name' => 'LG TV',
        'price' => 350.00
    ],
    [
        'name' => 'Samsung TV',
        'price' => 425.00
    ]
];

Pour trier ce tableau par le ' price', on peut utiliser la fonction array_multisort() avec la fonction array_column(), qui extrait une colonne (champ) spécifique du tableau multidimensionnel. L'extrait suivant accomplit cela :

array_multisort(array_column($data, 'price'), SORT_ASC, $data);

Cet appel réorganisera le tableau par ordre croissant en fonction du champ « prix » tout en supprimant les clés externes du tableau d'origine. Le tableau trié résultant apparaîtra comme :

[
    [
        'name' => 'LG TV',
        'price' => 350.00
    ],
    [
        'name' => 'Samsung TV',
        'price' => 425.00
    ],
    [
        'name' => 'Sony TV',
        'price' => 600.00
    ]
]

Alternativement, pour les versions PHP antérieures à 8, une solution à deux lignes était requise en raison des restrictions de passage de référence :

$col = array_column($data, 'price');
array_multisort($col, SORT_ASC, $data);

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