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
Libérer: 2024-12-15 05:26:12
original
874 Les gens l'ont consulté

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

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

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

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
);
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