In diesem Artikel wird die Funktionsweise des Konverters "Listen sortieren" erläutert. Mit Hilfe dieses Online-Tools können Listen ganz einfach nach verschiedenen Kriterien sortiert werden.
Inhaltsverzeichnis
Verschiedene Sortierverfahren
Eine Liste kann man bekanntlich nach unterschiedlichsten Verfahren sortieren. Dieses Online-Tool unterstützt die alphabetische Sortierung nach DIN 5007-1, die Telefonbuch-Sortierung nach DIN 5007-2, die natürliche Sortierung, sowie die umgekehrte Sortierung. Hierbei ist es möglich, die sortierte Liste aufsteigend oder absteigend anzuordnen sowie die Klein-/Großschreibung zu ignorieren.
Alphabetische Sortierung (DIN 5007-1)
Wie man eine Liste alphabetisch sortiert, dürfte klar sein. Lediglich bei ein paar Zeichen, wie z.B. den Umlauten Ä, Ö und Ü ist es nicht sofort ersichtlich, wie diese einzuordnen sind. Nach DIN 5007-1 gilt hierbei folgendes:
- ä/Ä und a/A sind gleich
- ö/Ö und o/O sind gleich
- ü/Ü und u/U sind gleich
- ß und ss sind gleich
Programmiertechnisch kann dies in PHP wie folgt umgesetzt werden:
$sortierte_liste = array(); $search = array("#Ä#u", "#ä#u", "#Ö#u", "#ö#u", "#Ü#u", "#ü#u", "#ß#u", "#-#u"); $replace = array("A", "a", "O", "o", "U", "u", "ss", " "); $arr_replaced = preg_replace($search, $replace, $alle_eintraege); // Zeichen ersetzen // Wenn die Klein-/Großschreibung beachtet werden soll if ($case_sensitive) { asort($arr_replaced, SORT_STRING); // Alphabetisch sortieren } // Wenn die Klein-/Großschreibung nicht beachtet werden soll else { asort($arr_replaced, SORT_STRING | SORT_FLAG_CASE); // Alphabetisch sortieren } foreach ($arr_replaced as $key => $value) { $sortierte_liste[] = $alle_eintraege[$key]; }
Im Prinzip wird hier einfach ein zusätzliches Array erstellt, bei dem die Umlaute usw. ersetzt werden. Dieses wird dann sortiert und anschließend wird das Original-Array in die gleiche Reihenfolge gebracht.
Telefonbuch-Sortierung (DIN 5007-2)
Bei der sogenannten Telefonbuch-Sortierung nach DIN 5007-2 werden die Umlaute auf eine andere Art und Weise ersetzt:
- ä/Ä und ae/Ae sind gleich
- ö/Ö und oe/Oe sind gleich
- ü/Ü und ue/Ue sind gleich
- ß und ss sind gleich
Des Weiteren wird hier nicht die normale alphabetische Sortierung, sondern die natürliche Sortierung angewendet. Bei der natürlichen Sortierung werden Einträge mit Zahlenwerten so einsortiert, wie es ein Mensch auch tun würde. Zum besseren Verständnis hier ein kurzes Beispiel:
- Bild1.png
- Bild13.png
- Bild2.png
- Bild20.png
- Bild1.png
- Bild2.png
- Bild13.png
- Bild20.png
Der Code für die Telefonbuch-Sortierung sieht dann wie folgt aus:
$sortierte_liste = array(); $search = array("#Ä#u", "#ä#u", "#Ö#u", "#ö#u", "#Ü#u", "#ü#u", "#ß#u", "#-#u"); $replace = array("Ae", "ae", "Oe", "oe", "Ue", "ue", "ss", " "); $arr_replaced = preg_replace($search, $replace, $alle_eintraege); // Zeichen ersetzen // Wenn die Klein-/Großschreibung beachtet werden soll if ($case_sensitive) { natsort($arr_replaced); // Natürlich sortieren } // Wenn die Klein-/Großschreibung nicht beachtet werden soll else { natcasesort($arr_replaced); // Natürlich sortieren } foreach ($arr_replaced as $key => $value) { $sortierte_liste[] = $alle_eintraege[$key]; }
Natürliche Sortierung
Die natürliche Sortierung wurde ja bereits im vorherigen Abschnitt erläutert. Der Unterschied bei der Auswahl dieses Sortierverfahrens im Gegensatz zur Telefonbuch-Sortierung besteht lediglich darin, dass die Umlaute usw. wie bei der alphabetischen Sortierung ersetzt werden:
$sortierte_liste = array(); $search = array("#Ä#u", "#ä#u", "#Ö#u", "#ö#u", "#Ü#u", "#ü#u", "#ß#u", "#-#u"); $replace = array("A", "a", "O", "o", "U", "u", "ss", " "); $arr_replaced = preg_replace($search, $replace, $alle_eintraege); // Zeichen ersetzen // Wenn die Klein-/Großschreibung beachtet werden soll if ($case_sensitive) { natsort($arr_replaced); // Natürlich sortieren } // Wenn die Klein-/Großschreibung nicht beachtet werden soll else { natcasesort($arr_replaced); // Natürlich sortieren } foreach ($arr_replaced as $key => $value) { $sortierte_liste[] = $alle_eintraege[$key]; }
Umgekehrte Reihenfolge
Für das umgekehrte Sortierverfahren muss lediglich das Array mit den Einträgen umgekehrt werden:
$sortierte_liste = array_reverse($alle_eintraege);
Die gleiche Funktion wird auch hierterher bei der Auswahl einer absteigenden Sortierung angewendet.
ZUM LISTEN SORTIERER