Start · Sprachen · PHP · Referenz · arsort

arsort

Funktion

Sortiert ein Array in absteigender Reihenfolge nach Werten und behält dabei die ursprüngliche Schlüssel-Wert-Zuordnung erhalten.

seit PHP 4.0.0 Kategorie: array

Signatur

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

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

Typ
true
Beschreibung
Gibt seit PHP 8.0 immer 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";
}
Diana: 95 Punkte Bob: 92 Punkte Alice: 85 Punkte Charlie: 78 Punkte

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";
}
p3 => Zitrone p4 => Mango p1 => Banane p2 => Apfel

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";
}
f4 => bild20.png f1 => bild10.png f2 => bild2.png f3 => bild1.png

// 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.