Signatur
Beschreibung
arsort() sortiert das übergebene Array absteigend nach seinen Werten, wobei die Zuordnung zwischen Schlüsseln und Werten erhalten bleibt. Dies ist besonders nützlich bei assoziativen Arrays, bei denen die Schlüssel eine inhaltliche Bedeutung haben und nach der Sortierung noch korrekt auf ihre Werte zeigen sollen.
Im Unterschied zu rsort() werden die Schlüssel nicht neu vergeben. Nach dem Aufruf ist das Array absteigend sortiert, und jeder Wert ist noch mit seinem ursprünglichen Schlüssel verknüpft. Dies unterscheidet arsort() auch von sort() und rsort(), die die Schlüssel zurücksetzen.
Das Sortierverhalten lässt sich über den Parameter $flags steuern. So kann beispielsweise mit SORT_STRING eine lexikografische Sortierung, mit SORT_NUMERIC eine numerische Sortierung oder mit SORT_NATURAL eine natürliche Sortierung erzwungen werden.
Typische Einsatzszenarien sind etwa Rankings, bei denen Bezeichnungen (z. B. Produktnamen) mit einem Punktestand oder einer Bewertung verknüpft sind und absteigend angezeigt werden sollen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $array Pflicht | array | Das zu sortierende Array, das per Referenz übergeben wird. Es wird direkt verändert. | |
| $flags | int | SORT_REGULAR | Bestimmt das Sortierverhalten. Mögliche Werte: SORT_REGULAR, SORT_NUMERIC, SORT_STRING, SORT_LOCALE_STRING, SORT_NATURAL, SORT_FLAG_CASE. |
Rückgabewert
true zurück. Zuvor wurde ebenfalls immer true zurückgegeben, der Rückgabetyp war jedoch als bool deklariert.Beispiele
Assoziativer Array nach Werten absteigend sortieren
<?php
$bewertungen = [
'Alice' => 85,
'Bob' => 92,
'Charlie' => 78,
'Diana' => 95,
];
arsort($bewertungen);
foreach ($bewertungen as $name => $punkte) {
echo "$name: $punkte Punkte\n";
}
Sortierung von Strings mit SORT_STRING
<?php
$produkte = [
'p1' => 'Banane',
'p2' => 'Apfel',
'p3' => 'Zitrone',
'p4' => 'Mango',
];
arsort($produkte, SORT_STRING);
foreach ($produkte as $key => $name) {
echo "$key => $name\n";
}
Natürliche absteigende Sortierung mit SORT_NATURAL
<?php
$dateien = [
'f1' => 'bild10.png',
'f2' => 'bild2.png',
'f3' => 'bild1.png',
'f4' => 'bild20.png',
];
arsort($dateien, SORT_NATURAL);
foreach ($dateien as $key => $datei) {
echo "$key => $datei\n";
}
// Wichtig · Fallstricke
Schlüssel bleiben erhalten: Anders als rsort() setzt arsort() die numerischen Schlüssel nicht zurück. Wer ein Array absteigend sortieren und dabei keine Schlüsselerhaltung benötigt, kann rsort() verwenden.
Vergleich mit ähnlichen Funktionen: krsort() sortiert absteigend nach Schlüsseln, während arsort() nach Werten sortiert. Für eine benutzerdefinierte Sortierreihenfolge mit Schlüsselerhaltung steht uasort() zur Verfügung.
Stabilität: Seit PHP 8.0 ist der Sortieralgorithmus von PHP stabil, d. h. Elemente mit gleichem Wert behalten ihre ursprüngliche Reihenfolge zueinander.