4.10.6 Übersicht Sortierungsfunktionen
Es gibt verschiedene vordefinierte Funktionen in PHP, mit denen Arrays sortiert werden können. Diese Funktionen bekommen ein Array übergeben, sortieren dies nach einem bestimmten Algorithmus und geben ein neues Array mit sortiertem Inhalt zurück.
Sortierfunktionen
Aufsteigend | Absteigend | Benutzerdefiniert | Funktion |
---|---|---|---|
sort() | rsort() | usort() | Sortiert die Werte eines Arrays und weist numerische Indizes zu. Die Zuordnung von Schlüssel zu Wert bleibt dabei nicht erhalten. Ein vorher assoziatives Array wird in ein indiziertes Array umgewandelt. |
asort() | arsort() | uasort() | Die Funktion asort() sortiert ein assoziatives Array aufsteigend nach den Werten der Elemente. Die Zuordnung von Schlüssel zu Wert bleibt dabei erhalten. |
ksort() | krsort() | uksort() | Die Funktion ksort() sortiert ein assoziatives Array aufsteigend nach den Schlüsseln. Die Beziehung zwischen Schlüssel und Wert bleibt erhalten. |
Hinweis
Bei benutzerdefinierten Sortierungsfunktionen werden die Elemente mittels einer zuvor definierten Vergleichsfunktion sortiert. Syntax-Beispiel: usort(Array, "Name der Vergleichsfunktion");
Beispiel für die Sortierungsfunktionen sort() & rsort()
Hier wird ein Beispiel für die häufig verwendeten Sortierfunktionen sort()
und rsort()
gezeigt. Wie wir am Beispiel sehen, sortieren die PHP-Funktionen das Array direkt, also ohne eine Zuweisung an ein anderes Array: also nur sort($digits)
verwenden und nicht $sortDigits = sort($digits)
.
Code
Ausgabe:
unsortiert: 17 19 21 15 9 13
aufsteigend sortiert: 9 13 15 17 19 21
absteigend sortiert: 21 19 17 15 13 9
Beispiel für die Sortierungsfunktion uksort()
Es macht Sinn, eine eigene Vergleichsfunktion zu verwenden, wenn die Entscheidung über die Sortierreihenfolge nicht trivial ist. Dann wird die Sortierung mit usort() oder uksort() durchgeführt.
Code
Ausgabe:
Array ( [20] => zwanzig [10] => zehn [4] => vier [3] => drei )
20: zwanzig
10: zehn
4: vier
3: drei
Hinweis
Die Sortierung erfolgt nach den Schlüsseln, wobei die Zuordnung "Schlüssel-zu-Wert" erhalten bleibt.
Mit dem return-Wert 1, -1, oder 0 wird uksort() angewiesen, dass das zweite Argument größer, gleich oder kleiner ist als das erste Argument.
Wir sehen hier, dass in Zeile 9 die vordefinierte PHP-Funktion uksort($digits, "compare")
die eigene Funktion compare($one, $two)
aufruft. Die eigene Funktion compare
wird dann auch als Callbacks / Callables bezeichnet.
Hinweis
Callables sind sehr interessant. Eine PHP-Funktion wird anhand ihres Namens als String übergeben, wie das Beispiel mit der Funktion compare($one, $two)
zeigt, die als String übergeben wird an uksort($digits, "compare")
.
Jede PHP-eigene Funktion (außer array(), echo, empty(), eval(), exit(), isset(), list(), print, unset()) und jede selbst erstellte Funktion kann für die Übergabe verwendet werden.