Sortieren

Häufig ist es nötig, sortierte Informationen anzuzeigen. Arrays eignen sich hervorragend dazu, zunächst die Informationen aufzunehmen und dann sortiert zu werden. Es ist möglich diverse Sortieralgorithmen in PHP selbst implementieren. Einfacher geht es jedoch, wenn die in PHP integrierten Sortierfunktionen genutzt werden, die nun vorgestellt werden.

Die Funktion sort() sortiert ein Array in seinen Werten aufsteigend von seinem niedrigsten bis zu seinem höchsten. Dabei wird als erster Parameter das Array selbst übergeben. Nach Aufruf der Funktion liegt dieses Array sortiert vor. Der Rückgabewert der Funktion gibt darüber Auskunft, ob die Sortierung erfolgreich war. Als zweiter optionaler Parameter können Flags übergeben werden, die dem Algorithmus mitteilen, wie die Werte zu sortieren sind:

  • SORT_REGULAR: Dies ist der Standardwert, wenn der Parameter nicht angegeben wird. Er sorgt dafür, dass normal verglichen wird, ohne dass die Werte im Array konvertiert werden.
  • SORT_NUMERIC: Die Einträge werden numerisch verglichen.
  • SORT_STRING: Die Einträge werden als Zeichenketten verglichen.
  • SORT_NATURAL: Modus ähnlich zu natsort().
  • SORT_FLAG_CASE: Kann zu SORT_STRING oder SORT_NATURAL kombiniert werden, um Groß- und Kleinschreibung zu ignorieren.
  • SORT_LOCALE_STRING: Die aktuellen Spracheinstellungen werden genutzt, um Zeichenketten je nach der lokalen Gegebenheit zu sortieren.

Die Funktion rsort() stellt eine Doublette zu der Funktion sort() dar. Ihr einziger Unterschied ist, dass sie in umgekehrter Reihenfolge sortiert, nämlich beginnend von dem höchsten Wert bis zum niedrigsten Wert.

Bei beiden oben genannten Funktionen geht innerhalb des Arrays die Zuordnung zwischen Schlüssel und Wert verloren. Dies kann verhindert werden, indem stattdessen die Funktionen asort() für aufsteigende Reihenfolge und arsort() für absteigende Reihenfolge genutzt werden. Auch hier sind die Parameter, die den Funktionen übergeben werden identisch.

Mit Hilfe der Funktion ksort() wird das Array nicht nach seinen Werten, sondern nach seinen Schlüsseln sortiert. Die Parameterliste ist wiederum identisch. Bei einer Sortierung nach Schlüsseln werden die Schlüssel-Wert-Beziehungen nicht zerstört. Die Funktion krsort() ist die Komplementärfunktion. Während ksort() die Schlüssel aufsteigend sortiert, sortiert krsort() die Schlüssel absteigend.

Die Funktion natsort() führt eine natürliche Sortierung, wie sie auch ein Mensch durchführen würde, durch. Dabei werden die Schlüssel-Wert-Beziehungen ebenfalls nicht zerstört. Die Funktion kann beispielsweise Zahlenwerte, die Teile von Strings sind, erkennen und nach diesen lesbarer Sortieren.

Die Funktion usort() schließlich nutzt eine übergebene Callback-Funktion. Ihr wird als erster Parameter das zu sortierende Array und als zweiter Parameter diese Callback-Funktion übergeben. Gibt die Callback-Funktion eine Zahl kleiner als 0 zurück, so ist der erste Wert kleiner als der zweite. Ist der Rückgabewert 0, so sind beide Werte gleich groß. Wird eine positive Zahl – also größer als 0 – zurückgegeben, so bedeutet dies, dass der erste Wert größer als der zweite war.

Folgendes Beispiel imitiert die Funktion sort() unter der Nutzung von usort():

Alternativ könnte auch die Funktion separat definiert werden und deren Name als ein String ähnlich wie bei der Funktion array_walk() übergeben werden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert