Sortieren mehrdimensionaler Arrays in PHP: Eine vielseitige Lösung
Dieser umfassende Leitfaden befasst sich mit der Aufgabe, mehrdimensionale Arrays in PHP zu sortieren. Es bietet eine wiederverwendbare und hochgradig anpassbare Lösung, mit der Sie Ihre Daten mühelos sortieren können.
Die Lösung: Funktion make_comparer()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | function make_comparer() {
$criteria = func_get_args();
foreach ( $criteria as $index => $criterion ) {
$criteria [ $index ] = is_array ( $criterion )
? array_pad ( $criterion , 3, null)
: array ( $criterion , SORT_ASC, null);
}
return function ( $first , $second ) use (& $criteria ) {
foreach ( $criteria as $criterion ) {
list( $column , $sortOrder , $projection ) = $criterion ;
$sortOrder = $sortOrder === SORT_DESC ? -1 : 1;
if ( $projection ) {
$lhs = call_user_func( $projection , $first [ $column ]);
$rhs = call_user_func( $projection , $second [ $column ]);
} else {
$lhs = $first [ $column ];
$rhs = $second [ $column ];
}
if ( $lhs < $rhs ) {
return -1 * $sortOrder ;
} elseif ( $lhs > $rhs ) {
return 1 * $sortOrder ;
}
}
return 0;
};
}
|
Nach dem Login kopieren
Verwendung
Grundlegende Verwendung: Sortieren nach einer einzelnen Spalte
1 2 3 4 5 6 7 8 | $data = array (
array ( 'zz' , 'name' => 'Jack' , 'number' => 22, 'birthday' => '12/03/1980' ),
array ( 'xx' , 'name' => 'Adam' , 'number' => 16, 'birthday' => '01/12/1979' ),
array ( 'aa' , 'name' => 'Paul' , 'number' => 16, 'birthday' => '03/11/1987' ),
array ( 'cc' , 'name' => 'Helen' , 'number' => 44, 'birthday' => '24/06/1967' ),
);
uasort( $data , make_comparer( 'name' ));
|
Nach dem Login kopieren
Sortieren nach mehreren Spalten:
1 2 | uasort( $data , make_comparer( 'number' , 0));
|
Nach dem Login kopieren
Erweiterte Funktionen
Umgekehrte Sortierung:
1 2 | uasort( $data , make_comparer([ 'name' , SORT_DESC]));
|
Nach dem Login kopieren
Benutzerdefinierte Projektionen:
1 2 | uasort( $data , make_comparer([ 'birthday' , SORT_ASC, 'date_create' ]));
|
Nach dem Login kopieren
Kombinierende Funktionen:
1 2 3 4 5 | uasort( $data , make_comparer(
[ 'number' , SORT_DESC],
[ 'birthday' , SORT_ASC, 'date_create' ]
));
|
Nach dem Login kopieren
Fazit
Diese Lösung bietet eine breite Palette an Funktionen Sortieren Sie mehrdimensionale Arrays in PHP. Seine Flexibilität und Benutzerfreundlichkeit machen es zu einem leistungsstarken Werkzeug für die Datenbearbeitung in verschiedenen Szenarien.
Das obige ist der detaillierte Inhalt vonWie kann ich mehrdimensionale Arrays in PHP effizient sortieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!