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