Start · Sprachen · PHP · Referenz · rsort

rsort

Funktion

Sortiert ein Array in absteigender Reihenfolge und setzt dabei die Schlüssel zurück.

seit PHP 4.0.0 Kategorie: array

Signatur

rsort(array &$array, int $flags = SORT_REGULAR): true

Beschreibung

rsort() sortiert ein Array absteigend (vom größten zum kleinsten Wert) und schreibt die Änderung direkt in das übergebene Array zurück (In-Place). Nach der Sortierung werden alle numerischen Schlüssel neu vergeben (beginnend bei 0), sodass vorhandene Indizes verloren gehen.

Das Verhalten beim Vergleichen von Elementen wird über den Parameter flags gesteuert. Standardmäßig (SORT_REGULAR) vergleicht PHP die Elemente entsprechend ihres Typs. Für rein numerische Werte empfiehlt sich SORT_NUMERIC, für Zeichenketten SORT_STRING oder SORT_LOCALE_STRING.

rsort() eignet sich gut für einfache, indizierte Arrays (z. B. Preislisten, Ranglisten), bei denen die ursprüngliche Schlüssel-Zuordnung keine Rolle spielt. Sollen Schlüssel erhalten bleiben (z. B. bei assoziativen Arrays), sollte stattdessen arsort() verwendet werden.

Die Funktion ist das Gegenstück zu sort(), das aufsteigend sortiert. Für benutzerdefinierte Sortierlogik in absteigender Reihenfolge steht usort() in Kombination mit einer eigenen Vergleichsfunktion zur Verfügung.

Parameter

Name Typ Default Beschreibung
$array Pflicht array Das zu sortierende Array. Es wird als Referenz übergeben und direkt verändert.
$flags int SORT_REGULAR Optionales Sortier-Flag, das das Vergleichsverhalten steuert. Mögliche Werte: SORT_REGULAR, SORT_NUMERIC, SORT_STRING, SORT_LOCALE_STRING, SORT_NATURAL, SORT_FLAG_CASE.

Rückgabewert

Typ
true
Beschreibung
Gibt seit PHP 8.2 immer true zurück. In früheren Versionen wurde bool angegeben, wobei die Funktion in der Praxis ebenfalls immer true zurückgab.

Beispiele

Zahlen absteigend sortieren

<?php
$zahlen = [3, 1, 8, 5, 2];
rsort($zahlen);
print_r($zahlen);
Array ( [0] => 8 [1] => 5 [2] => 3 [3] => 2 [4] => 1 )

Zeichenketten alphabetisch absteigend sortieren

<?php
$staedte = ['Berlin', 'Hamburg', 'München', 'Dresden', 'Köln'];
rsort($staedte, SORT_STRING | SORT_FLAG_CASE);
print_r($staedte);
Array ( [0] => München [1] => Köln [2] => Hamburg [3] => Dresden [4] => Berlin )

Rangliste: Top-Scores absteigend ausgeben

<?php
$scores = [1200, 950, 3400, 780, 2100];
rsort($scores);

foreach ($scores as $rang => $punkte) {
    echo ($rang + 1) . '. Platz: ' . $punkte . ' Punkte' . PHP_EOL;
}
1. Platz: 3400 Punkte 2. Platz: 2100 Punkte 3. Platz: 1200 Punkte 4. Platz: 950 Punkte 5. Platz: 780 Punkte

// Wichtig · Fallstricke

Schlüsselverlust: rsort() setzt alle Schlüssel des Arrays zurück. Assoziative Arrays (z. B. ['a' => 1, 'b' => 2]) verlieren nach dem Aufruf ihre ursprünglichen Zeichenketten-Schlüssel. In solchen Fällen sollte arsort() verwendet werden, das die Schlüssel beibehält.

Gemischte Typen: Bei Arrays mit gemischten Datentypen (z. B. Zahlen und Strings) kann SORT_REGULAR zu unerwarteten Ergebnissen führen. Es empfiehlt sich, das passende Flag explizit anzugeben.

Stabilität: Seit PHP 8.0 ist der Sortieralgorithmus stabil, d. h. Elemente mit gleichem Wert behalten ihre relative Reihenfolge zueinander bei.