Maison > développement back-end > tutoriel php > Comment trier un tableau PHP multidimensionnel par plusieurs champs ?

Comment trier un tableau PHP multidimensionnel par plusieurs champs ?

Patricia Arquette
Libérer: 2024-11-20 03:07:01
original
679 Les gens l'ont consulté

How to Sort a Multidimensional PHP Array by Multiple Fields?

Tri d'un tableau par plusieurs valeurs de champ en PHP

Problème :

Vous avez un tableau avec des structures de données complexes, et vous devez trier les valeurs en fonction de plusieurs valeurs de champ par ordre croissant.

Exemple :

Considérez le tableau suivant :

$array = [
    [
        "destination" => "Sydney",
        "airlines" => "airline_1",
        "one_way_fare" => 100,
        "return_fare" => 300
    ],
    [
        "destination" => "Sydney",
        "airlines" => "airline_2",
        "one_way_fare" => 150,
        "return_fare" => 350
    ],
    [
        "destination" => "Sydney",
        "airlines" => "airline_3",
        "one_way_fare" => 180,
        "return_fare" => 380
    ]
];
Copier après la connexion

Vous souhaitez trier ce tableau d'abord par "return_fare" par ordre croissant, puis par "one_way_fare" également par ordre croissant.

Solution :

Pour trier le tableau comme décrit, vous pouvez utiliser la fonction array_multisort(). Cependant, cela vous oblige à extraire les valeurs que vous souhaitez trier dans des tableaux séparés. Cela peut être fait en utilisant array_column().

// Extract "return_fare" and "one_way_fare" into separate arrays
$return_fare = array_column($array, 'return_fare');
$one_way_fare = array_column($array, 'one_way_fare');

// Sort the array using multiple criteria
array_multisort($return_fare, SORT_ASC, $one_way_fare, SORT_ASC, $array);
Copier après la connexion

Après le tri, le $array sera modifié pour refléter l'ordre de tri.

Solution alternative :

Vous pouvez également utiliser la fonction array_orderby() de la page de manuel de PHP pour simplifier le code ci-dessus :

// Sort the array using "array_orderby"
$sorted = array_orderby($array, 'return_fare', SORT_ASC, 'one_way_fare', SORT_ASC);
Copier après la connexion

Remarque :

Si vous utilisez PHP 5.5 ou supérieur, vous pouvez éviter la boucle en utilisant array_column() directement avec array_multisort() :

array_multisort(
    array_column($array, 'return_fare'), SORT_ASC,
    array_column($array, 'one_way_fare'), SORT_ASC,
    $array
);
Copier après la connexion

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal