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 ] ];
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);
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);
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']; }
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);
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!