Maison >développement back-end >tutoriel php >Comment trier un tableau PHP par plusieurs valeurs de champ ?
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!