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
711 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!

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