Sortieren von PHP-Arrays nach mehreren Feldwerten
Das Sortieren von Arrays mit mehreren Werten kann in PHP schwierig sein, aber es gibt mehrere Ansätze, dies zu erreichen . Eine gängige Lösung ist die Verwendung der Funktion array_multisort().
Angenommen, Sie haben ein Array wie das in der Frage angegebene:
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, ], ] )
So sortieren Sie dieses Array sowohl nach return_fare als auch nach one_way_fare in In aufsteigender Reihenfolge können Sie array_multisort() wie folgt verwenden:
// 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);
Dadurch wird das Array in aufsteigender Reihenfolge von return_fare, und dann wird innerhalb gleicher return_fare-Werte in aufsteigender Reihenfolge nach one_way_fare sortiert.
Eine andere Option ist die Verwendung der Funktion array_orderby(), die eine vereinfachte Syntax für die Sortierung nach mehreren Kriterien bietet:
$sorted = array_orderby($data, 'return_fare', SORT_ASC, 'one_way_fare', SORT_ASC);
Um Schleifen zu vermeiden, können Sie auch array_column() (verfügbar in PHP 5.5.0 oder höher) verwenden, um die gewünschten Spalten zu extrahieren und dann array_multisort() zu verwenden. auf diesen Spalten:
array_multisort( array_column($data, 'return_fare'), SORT_ASC, array_column($data, 'one_way_fare'), SORT_ASC, $data );
Das obige ist der detaillierte Inhalt vonWie sortiere ich ein PHP-Array nach mehreren Feldwerten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!