Comment trier un tableau PHP par plusieurs champs ?

Susan Sarandon
Libérer: 2024-11-22 10:18:11
original
479 Les gens l'ont consulté

How to Sort a PHP Array by Multiple Fields?

PHP : Trier un tableau par plusieurs valeurs de champ

Question :

Comment puis-je trier un tableau en PHP par deux valeurs de champ ou plus, similaire à l'utilisation de la clause « ORDER BY » dans SQL ?

Exemple Tableau :

$data = [
    [
        "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

Tri souhaité :

Trier le tableau par ordre croissant de "return_fare" puis par ordre croissant de "one_way_fare".

Réponse :

La fonction PHP correcte pour trier un tableau selon plusieurs valeurs de champ est array_multisort(). Voici un exemple de la façon d'obtenir le tri souhaité :

// Extract the relevant columns
$return_fare = array_column($data, 'return_fare');
$one_way_fare = array_column($data, 'one_way_fare');

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

Utilisation simplifiée avec array_orderby()

Vous pouvez simplifier le code en utilisant la fonction array_orderby() de Manuel de PHP :

$sorted = array_orderby($data, 'return_fare', SORT_ASC, 'one_way_fare', SORT_ASC);
Copier après la connexion

Tableau avec tableaux (boucles vs. array_column())

Si votre tableau contient des tableaux, vous pouvez utiliser une boucle pour extraire les valeurs pertinentes avant de trier :

$return_fare = [];
$one_way_fare = [];

foreach ($data as $row) {
    $return_fare[] = $row['return_fare'];
    $one_way_fare[] = $row['one_way_fare'];
}
Copier après la connexion

Ou, si vous utilisez PHP 5.5 ou version ultérieure, vous pouvez utiliser array_column() :

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