krsort()
Arrays in PHP sortieren ist eine häufige Aufgabe. Die PHP-Funktion krsort() sortiert ein Array in umgekehrter Reihenfolge nach seinen Schlüsseln.
PHP-Funktion krsort(): Array nach Schlüssel in umgekehrter Reihenfolge sortieren
Das Sortieren von Arrays in PHP ist eine häufige Aufgabe, insbesondere beim Umgang mit großen Datenmengen. Die PHP-Funktion krsort() ist eine äußerst nützliche Funktion, die es Entwicklern ermöglicht, ein Array nach seinen Schlüsseln in umgekehrter Reihenfolge zu sortieren. Diese Funktion ist sehr leistungsstark und kann beim Sortieren von Arrays viel Zeit und Aufwand sparen. In diesem Artikel gehen wir die Funktionalität der krsort()-Funktion im Detail durch und zeigen, wie man sie in verschiedenen Szenarien einsetzen kann.
Was ist krsort()?
Die krsort()-Funktion ist eine in PHP eingebaute Funktion, die ein Array in umgekehrter Reihenfolge basierend auf seinen Schlüsseln sortiert und dabei die Zuordnung zwischen jedem Schlüssel und seinem Wert beibehält. Der Name steht für key reverse sort (Schlüssel umgekehrt sortieren). Sie ist das absteigende Gegenstück zu ksort(), das nach Schlüssel in aufsteigender Reihenfolge sortiert.
Da sie nach Schlüssel (nicht nach Wert) sortiert, ist krsort() am nützlichsten bei assoziativen Arrays oder Arrays mit expliziten numerischen Schlüsseln — zum Beispiel beim Sortieren von Datensätzen, die nach ID, Jahr oder Priorität verschlüsselt sind, sodass der größte Schlüssel zuerst kommt.
Zwei Dinge sind zu beachten:
krsort()sortiert das Array in-place und gibt bei Erfolgtruezurück (es gibt niemals das sortierte Array zurück), daher ruft man es direkt auf der Variable auf.- Es arbeitet auf den Schlüsseln des Arrays. Um stattdessen nach Wert zu sortieren, verwendet man
arsort()(Schlüssel behalten) oderrsort()(neu indizieren).
Syntax von krsort()
Die Syntax der krsort()-Funktion lautet wie folgt:
krsort(array &$array, int $flags = SORT_REGULAR): trueHier ist $array das zu sortierende Array (wird per Referenz übergeben, sodass das ursprüngliche Array verändert wird), und $flags ist ein optionaler Parameter, der steuert, wie Schlüssel verglichen werden. Die Funktion gibt immer true zurück. Die möglichen Werte von $flags sind:
SORT_REGULAR: Dies ist der Standardwert. Die Funktion sortiert die Elemente normal, ohne Änderung ihrer Datentypen.SORT_NUMERIC: Die Funktion sortiert die Elemente numerisch, d. h. als Zahlen behandelt.SORT_STRING: Die Funktion sortiert die Elemente als Strings.SORT_LOCALE_STRING: Die Funktion sortiert die Elemente als Strings basierend auf der aktuellen Locale-Einstellung.SORT_NATURAL: Die Funktion sortiert die Elemente in natürlicher Reihenfolge, d. h. als Strings behandelt, aber unter Berücksichtigung ihrer numerischen Werte.SORT_FLAG_CASE: Dieses Flag kann mitSORT_STRINGoderSORT_NATURALkombiniert werden, um Strings ohne Berücksichtigung der Groß- und Kleinschreibung zu sortieren.
Beispiele zur Verwendung von krsort()
Schauen wir uns nun einige Beispiele an, wie man die krsort()-Funktion verwenden kann.
Beispiel 1: Array in umgekehrter Reihenfolge nach seinen Schlüsseln sortieren
Ausgabe:
Array
(
[d] => date
[c] => cherry
[b] => banana
[a] => apple
)In diesem Beispiel haben wir ein Array mit vier Elementen. Wir sortieren das Array in umgekehrter Reihenfolge nach seinen Schlüsseln mit der krsort()-Funktion. Die Ausgabe zeigt, dass das Array in absteigender Reihenfolge nach seinen Schlüsseln sortiert wurde.
Beispiel 2: Array in umgekehrter Reihenfolge nach seinen Schlüsseln sortieren, numerisch
Ausgabe:
Array
(
[4] => cherry
[3] => date
[2] => apple
[1] => banana
)Hier sind die Schlüssel numerische Strings. Das Sortieren mit dem Flag SORT_NUMERIC vergleicht sie als Zahlen, sodass das Array vom höchsten Schlüssel (4) bis zum niedrigsten (1) geordnet wird. Zu beachten ist, dass PHP ganzzahlähnliche String-Schlüssel wie "1" automatisch in Integer umwandelt, sodass SORT_REGULAR hier dasselbe Ergebnis liefern würde — das Flag SORT_NUMERIC ist relevant, wenn Schlüssel andernfalls als Strings verglichen werden könnten (wo "10" vor "9" sortiert).
Beispiel 3: Array in umgekehrter Reihenfolge nach seinen Schlüsseln sortieren, ohne Berücksichtigung der Groß- und Kleinschreibung
Ausgabe:
Array
(
[d] => date
[C] => cherry
[b] => banana
[A] => apple
)In diesem Beispiel haben wir ein Array mit vier Elementen, bei dem die Schlüssel Strings sind, von denen einige in Großbuchstaben geschrieben sind. Wir sortieren das Array in umgekehrter Reihenfolge nach seinen Schlüsseln, ohne Berücksichtigung der Groß- und Kleinschreibung, mit der krsort()-Funktion und den Flags SORT_STRING und SORT_FLAG_CASE. Die Ausgabe zeigt, dass das Array in absteigender Reihenfolge nach seinen Schlüsseln sortiert wurde, wobei die Groß- und Kleinschreibung der Strings ignoriert wird.
Verwandte Sortierfunktionen
PHP bietet eine vollständige Familie von Array-Sortierfunktionen. Die richtige Wahl hängt von zwei Fragen ab: Wird nach Schlüssel oder nach Wert sortiert, und soll die Reihenfolge aufsteigend oder absteigend sein?
| Funktion | Sortiert nach | Reihenfolge | Behält Schlüsselzuordnung |
|---|---|---|---|
ksort() | Schlüssel | Aufsteigend | Ja |
krsort() | Schlüssel | Absteigend | Ja |
asort() | Wert | Aufsteigend | Ja |
arsort() | Wert | Absteigend | Ja |
sort() | Wert | Aufsteigend | Nein (neu indiziert) |
rsort() | Wert | Absteigend | Nein (neu indiziert) |
uksort() | Schlüssel | Benutzerdefinierter Callback | Ja |
Wenn die Sortierlogik zu spezifisch für die Standardflags ist — zum Beispiel das Sortieren von Schlüsseln nach Stringlänge — greift man auf uksort() zurück, das die Angabe einer eigenen Vergleichsfunktion ermöglicht.
Fazit
Die krsort()-Funktion sortiert ein Array nach seinen Schlüsseln in absteigender Reihenfolge, in-place, und bewahrt dabei jedes Schlüssel-Wert-Paar. Sie akzeptiert ein optionales Sort-Flag-Argument, sodass Schlüssel numerisch, als Strings, natürlich oder ohne Berücksichtigung der Groß- und Kleinschreibung verglichen werden können. krsort() sollte immer dann verwendet werden, wenn man einen Datensatz mit Schlüsseln hat — IDs, Jahre, Prioritäten — der vom höchsten zum niedrigsten Schlüssel dargestellt werden soll, und für eine andere Reihenfolge oder das Sortieren nach Wert die verwandten Funktionen ksort() und arsort() eingesetzt werden.