W3docs

arsort() in PHP meistern: Arrays absteigend nach Wert sortieren

Erfahren Sie, wie Sie PHP's arsort() nutzen, um assoziative Arrays absteigend nach Wert zu sortieren und dabei Schlüsselzuordnungen zu erhalten.

arsort() sortiert ein assoziatives array absteigend nach Wert und behält dabei jede Zuordnung zum ursprünglichen Schlüssel bei. Das „a" steht für assoziativ (Schlüsselzuordnungen bleiben erhalten) und das „r" für reverse (größter Wert zuerst). Diese Seite behandelt die Syntax, die optionalen Sortier-Flags, ausführbare Beispiele sowie die Unterschiede zwischen arsort() und den anderen PHP-Sortierfunktionen.

Verwenden Sie arsort() immer dann, wenn die Schlüssel eine Bedeutung tragen, die nicht verloren gehen darf – beispielsweise eine Zuordnung von Produktnamen zu Preisen, Benutzernamen zu Punktzahlen oder Kategorien zu Zählwerten –, und Sie die höchsten Werte ganz oben sehen möchten.

Syntax

arsort(array &$array, int $flags = SORT_REGULAR): true
  • $array — das zu sortierende array. Es wird per Referenz übergeben, sodass arsort() das array direkt verändert, anstatt ein neues zurückzugeben. Die Funktion selbst gibt true zurück.
  • $flags — optional. Steuert, wie Werte verglichen werden. Standardmäßig SORT_REGULAR.

Sortier-Flags

Das Argument $flags bestimmt, wie zwei Werte verglichen werden:

  • SORT_REGULAR — Elemente normal vergleichen, ohne ihre Typen zu ändern (Standard).
  • SORT_NUMERIC — Elemente als Zahlen vergleichen.
  • SORT_STRING — Elemente als Strings vergleichen.
  • SORT_NATURAL — Strings mit einem „natürlichen Sortieralgorithmus" vergleichen (so wird "img10" nach "img2" sortiert).
  • SORT_FLAG_CASE — mit SORT_STRING oder SORT_NATURAL per | kombinieren, um den Stringvergleich Groß-/Kleinschreibung-unabhängig zu machen.

Die Wahl des richtigen Flags ist wichtig: Mit dem Standard SORT_REGULAR werden numerische Strings wie "10" und "9" numerisch verglichen, in gemischten Arrays können die Ergebnisse jedoch überraschend sein. Wählen Sie SORT_NUMERIC oder SORT_STRING explizit, wenn die Werttypen bekannt sind.

Ein assoziatives array sortieren

php— editable, runs on the server

Dieser Code gibt folgendes aus:

orange - 3
apple - 2
banana - 1

Die Werte sind nun vom größten zum kleinsten geordnet, und entscheidend ist, dass jeder Fruchtname noch auf seine eigene Zahl zeigt — arsort() hat die Schlüssel-Wert-Zuordnung erhalten. Genau das macht die Funktion so geeignet für Dinge wie Ranglisten oder Preislisten.

Mit einem Flag sortieren

php— editable, runs on the server

Dieser Code gibt folgendes aus:

1 - 5
4 - 4
0 - 3
2 - 2
3 - 1

Das array $numbers wird mit SORT_NUMERIC absteigend nach Wert sortiert. Beachten Sie, wie die ursprünglichen numerischen Schlüssel mit ihren Werten mitbewegt werden, anstatt als 0, 1, 2… neu indiziert zu werden. Wenn Sie diese Schlüssel nicht beibehalten müssen, verwenden Sie stattdessen rsort(), das das array neu nummeriert.

arsort() vs. die anderen Sortierfunktionen

PHPs array-Sortierfunktionen bilden eine konsistente Familie. Die Wahl der richtigen Funktion hängt von zwei Fragen ab: nach Wert oder nach Schlüssel sortieren? und Schlüssel erhalten oder nicht?

FunktionSortiert nachReihenfolgeSchlüsselzuordnung erhalten
asort()Wertaufsteigendja
arsort()Wertabsteigendja
sort()Wertaufsteigendnein (neu indiziert)
rsort()Wertabsteigendnein (neu indiziert)
ksort()Schlüsselaufsteigendja
krsort()Schlüsselabsteigendja

arsort() ist also das „absteigend, nach Wert, Schlüssel behalten"-Mitglied der Familie – es ist das Spiegelbild von asort().

Häufige Fallstricke

  • Es gibt true zurück, nicht das sortierte array. $sorted = arsort($array); setzt $sorted auf true. Die Sortierung findet direkt am ursprünglichen $array statt.
  • Numerische Schlüssel werden nicht neu indiziert. Das ist genau der Sinn von arsort(). Wenn Sie nach dem Sortieren eine saubere 0, 1, 2…-Sequenz wollen, verwenden Sie rsort().
  • Gemischte Typen vergleichen kann unter SORT_REGULAR zu unerwarteter Reihenfolge führen. Übergeben Sie ein explizites Flag, wenn Ihr array Strings und Zahlen mischt.
  • Für benutzerdefinierte Vergleichslogik (Objekte sortieren oder nach einem berechneten Schlüssel) greifen Sie auf uasort() zurück, das einen eigenen Vergleichs-Callback erlaubt und dabei Schlüssel erhält.

Fazit

arsort() sortiert ein array absteigend nach Wert und hält jeden Schlüssel an seinen Wert gebunden – ideal für gerankte, beschriftete Daten wie Punktzahlen oder Preise. Denken Sie daran, dass die Funktion in-place sortiert und true zurückgibt, und wählen Sie ein Sortier-Flag, das zu Ihren Datentypen passt. Wenn Sie eine andere Kombination aus Reihenfolge, Schlüssel-vs-Wert oder Schlüsselerhaltung benötigen, decken die verwandten Funktionen in der obigen Tabelle jeden Fall ab.

Übungen

Übung
Was ist die Funktion von arsort() in PHP?
Was ist die Funktion von arsort() in PHP?
Was this page helpful?