Signatur
Beschreibung
krsort() sortiert ein assoziatives Array nach seinen Schlüsseln in absteigender Reihenfolge (Z→A bzw. 9→0). Im Gegensatz zu rsort() bleiben die Schlüssel-Wert-Zuordnungen erhalten, sodass nach der Sortierung jeder Wert noch unter seinem ursprünglichen Schlüssel erreichbar ist. Das Array wird direkt verändert (In-Place-Sortierung).
Die Funktion ist besonders nützlich, wenn ein assoziatives Array mit Textkennungen oder numerischen IDs als Schlüssel in umgekehrter alphabetischer oder numerischer Reihenfolge ausgegeben werden soll – beispielsweise bei der Darstellung von Jahreszahlen, Versionen oder Kategorien in absteigender Reihenfolge.
Das Verhalten der Sortierung lässt sich über den Parameter $flags anpassen. So kann mit SORT_NATURAL eine natürliche Sortierung (z. B. item10 nach item9) erzwungen werden, oder mit SORT_STRING eine rein zeichenbasierte Sortierung.
Seit PHP 8.0 gibt die Funktion immer true zurück. In älteren PHP-Versionen konnte sie theoretisch false zurückgeben, was in der Praxis jedoch kaum auftrat.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $array Pflicht | array | Das zu sortierende Array, das per Referenz übergeben wird und direkt verändert wird. | |
| $flags | int | SORT_REGULAR | Optionale Sortier-Flags, die das Vergleichsverhalten steuern. Mögliche Werte: SORT_REGULAR, SORT_NUMERIC, SORT_STRING, SORT_LOCALE_STRING, SORT_NATURAL, SORT_FLAG_CASE. |
Rückgabewert
true zurück. In früheren Versionen wurde bool zurückgegeben.Beispiele
Assoziatives Array nach Schlüsseln absteigend sortieren
<?php
$preise = [
'Banane' => 0.49,
'Apfel' => 0.79,
'Zitrone' => 0.99,
'Mango' => 1.49,
];
krsort($preise);
foreach ($preise as $frucht => $preis) {
echo "$frucht: $preis EUR\n";
}
Jahreszahlen als Schlüssel absteigend sortieren (neueste zuerst)
<?php
$umsaetze = [
2021 => 45000,
2023 => 72000,
2019 => 38000,
2022 => 61000,
];
krsort($umsaetze);
foreach ($umsaetze as $jahr => $umsatz) {
echo "$jahr: $umsatz EUR\n";
}
Natürliche Sortierung der Schlüssel mit SORT_NATURAL absteigend
<?php
$dateien = [
'datei10' => 'Zehnter Eintrag',
'datei2' => 'Zweiter Eintrag',
'datei1' => 'Erster Eintrag',
'datei20' => 'Zwanzigster Eintrag',
];
krsort($dateien, SORT_NATURAL);
foreach ($dateien as $key => $value) {
echo "$key: $value\n";
}
// Wichtig · Fallstricke
Reihenfolge bei gleichen Schlüsseln: Da Schlüssel in einem PHP-Array eindeutig sind, treten keine Gleichstände auf – jeder Schlüssel existiert nur einmal.
Gegenstück: ksort() sortiert aufsteigend nach Schlüsseln. Für absteigende Sortierung nach Werten unter Erhalt der Schlüssel dient arsort().
Numerische Schlüssel: Bei rein numerisch indizierten Arrays (0, 1, 2, …) verhält sich krsort() wie eine umgekehrte numerische Schlüsselsortierung. Soll nur die Reihenfolge ohne Schlüsselerhalt umgekehrt werden, ist array_reverse() oft besser geeignet.