Maison >développement back-end >tutoriel php >Comment trier un tableau PHP par plusieurs valeurs de champ ?

Comment trier un tableau PHP par plusieurs valeurs de champ ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-15 05:26:12875parcourir

How to Sort a PHP Array by Multiple Field Values?

Tri des tableaux PHP par plusieurs valeurs de champ

Le tri des tableaux avec plusieurs valeurs peut être délicat en PHP, mais il existe plusieurs approches pour y parvenir . Une solution courante consiste à utiliser la fonction array_multisort().

Supposons que vous ayez un tableau comme celui fourni dans la question :

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,
        ],
    ]
)

Pour trier ce tableau à la fois par return_fare et one_way_fare dans ordre croissant, vous pouvez utiliser array_multisort() comme suit :

// Obtain a list of columns
foreach ($data as $key => $row) {
    $return_fare[$key]  = $row['return_fare'];
    $one_way_fare[$key] = $row['one_way_fare'];
}

// Sort the data with return_fare descending, one_way_fare ascending
array_multisort($data, $return_fare, SORT_ASC, $one_way_fare, SORT_ASC);

Cela triera le tableau par ordre croissant de return_fare, puis à valeurs return_fare égales, il triera par ordre croissant de one_way_fare.

Une autre option consiste à utiliser la fonction array_orderby(), qui fournit une syntaxe simplifiée pour le tri selon plusieurs critères :

$sorted = array_orderby($data, 'return_fare', SORT_ASC, 'one_way_fare', SORT_ASC);

Pour éviter les boucles, vous pouvez également utiliser array_column() (disponible en PHP 5.5.0 ou version ultérieure) pour extraire les colonnes souhaitées puis utiliser array_multisort() sur ces colonnes :

array_multisort(
    array_column($data, 'return_fare'), SORT_ASC,
    array_column($data, 'one_way_fare'), 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