Sortieren eines Arrays nach mehreren Feldwerten in PHP
Problem:
Sie haben ein Array mit komplexen Datenstrukturen, und Sie müssen die Werte basierend auf mehreren Feldwerten in aufsteigender Reihenfolge sortieren Reihenfolge.
Beispiel:
Betrachten Sie das folgende Array:
$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 ] ];
Sie möchten dieses Array zuerst nach „return_fare“ in aufsteigender Reihenfolge sortieren und dann per „one_way_fare“ auch in aufsteigender Reihenfolge Reihenfolge.
Lösung:
Um das Array wie beschrieben zu sortieren, können Sie die Funktion array_multisort() verwenden. Allerdings müssen Sie die zu sortierenden Werte in separate Arrays extrahieren. Dies kann mit array_column() erfolgen.
// 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);
Nach dem Sortieren wird das $array geändert, um die sortierte Reihenfolge widerzuspiegeln.
Alternative Lösung:
Sie können auch die Funktion array_orderby() aus der PHP-Handbuchseite verwenden, um das oben Gesagte zu vereinfachen Code:
// Sort the array using "array_orderby" $sorted = array_orderby($array, 'return_fare', SORT_ASC, 'one_way_fare', SORT_ASC);
Hinweis:
Wenn Sie PHP 5.5 oder höher verwenden, können Sie die Schleife vermeiden, indem Sie array_column() direkt mit array_multisort() verwenden:
array_multisort( array_column($array, 'return_fare'), SORT_ASC, array_column($array, 'one_way_fare'), SORT_ASC, $array );
Das obige ist der detaillierte Inhalt vonWie sortiere ich ein mehrdimensionales PHP-Array nach mehreren Feldern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!