Natürliche Sortierung
Teil des Abschnitts Logik & Ablauf der PHP-Journey von Coddy — Lektion 24 von 68.
Während die Standard-Sortierfunktionen von PHP in den meisten Fällen gut funktionieren, können sie unerwartete Ergebnisse liefern, wenn Zeichenketten sortiert werden, die Zahlen enthalten. Die Funktion natsort() löst dieses Problem durch die Verwendung eines Algorithmus für die „natürliche Sortierung“, der Zeichenketten so sortiert, wie Menschen es natürlicherweise erwarten würden.
Betrachten Sie dieses Beispiel mit Dateinamen:
<?php
$files = ["file1.txt", "file10.txt", "file2.txt", "file20.txt"];
// Reguläres sort() ergibt: file1.txt, file10.txt, file2.txt, file20.txt
sort($files);
print_r($files);
// Das Array zurücksetzen
$files = ["file1.txt", "file10.txt", "file2.txt", "file20.txt"];
// natsort() ergibt: file1.txt, file2.txt, file10.txt, file20.txt
natsort($files);
print_r($files);
?>Der Unterschied ist entscheidend: Das reguläre sort() vergleicht Zeichenketten Zeichen für Zeichen, daher kommt "file10.txt" vor "file2.txt", weil "1" in ASCII vor "2" steht. natsort() hingegen erkennt die numerischen Anteile und sortiert sie numerisch, wodurch "file2.txt" vor "file10.txt" platziert wird, wie man es natürlicherweise erwarten würde.
Wie andere PHP-Sortierfunktionen modifiziert natsort() das ursprüngliche Array direkt. Dies macht sie besonders nützlich für die Organisation von Dateilisten, Versionsnummern oder allen Daten, bei denen Strings eingebettete Zahlen enthalten, die numerisch statt alphabetisch sortiert werden sollten.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Aufgabe
EinfachSie erhalten eine Eingabe: ein Array von Software-Versionsnummern im JSON-Format. Lesen Sie die Eingabe ein, konvertieren Sie den JSON-String in ein Array, verwenden Sie natsort(), um die Versionsnummern in natürlicher Reihenfolge zu sortieren, und geben Sie das sortierte Array mit print_r() aus.
Eingabeformat: Eine Zeile, die ein JSON-Array von Versions-Strings enthält (Beispiel: ["v1.10","v1.2","v1.20","v1.3"])
Erwartete Ausgabe: Das sortierte Array in natürlicher Reihenfolge, angezeigt mittels print_r()
Spickzettel
Die Funktion natsort() sortiert Zeichenfolgen unter Verwendung der „natürlichen Sortierung“ – so, wie Menschen natürlicherweise erwarten, dass Zeichenfolgen mit Zahlen sortiert werden.
Die reguläre Funktion sort() vergleicht Zeichenfolgen Zeichen für Zeichen, während natsort() numerische Anteile erkennt und diese numerisch sortiert:
$files = ["file1.txt", "file10.txt", "file2.txt", "file20.txt"];
// Reguläres sort() ergibt: file1.txt, file10.txt, file2.txt, file20.txt
sort($files);
// natsort() ergibt: file1.txt, file2.txt, file10.txt, file20.txt
natsort($files);
print_r($files);Wie andere PHP-Sortierfunktionen modifiziert natsort() das ursprüngliche Array direkt. Sie ist besonders nützlich für Dateilisten, Versionsnummern oder alle Daten mit eingebetteten Zahlen, die numerisch sortiert werden sollten.
Probier es selbst
<?php
// Eingabe lesen
$input = fgets(STDIN);
// JSON-String in Array umwandeln
$versions = (array)json_decode($input, true);
// TODO: Schreiben Sie Ihren Code unten, um das Array mit natsort() zu sortieren
// Das sortierte Array ausgeben
print_r($versions);
?>Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Fortgeschrittene Funktionen
Anonyme FunktionenClosures und 'use'Arrow FunctionsCallback-FunktionenVerwendung von 'call_user_func'VariablenfunktionenReferenzübergabeRekursive FunktionenRückblick: Funktions-Medley4Mehrdimensionale Arrays
Ein 2D-Array erstellenZugriff auf 2D-Array-ElementeÄndern von 2D-Array-ElementenIterieren mit verschachtelten Schleifen2D assoziative ArraysZusammenfassung: Einfache Gitter-Übung2Fortgeschrittene Array-Manipulationen
Hinzufügen mit 'array_push'Entfernen mit 'array_pop'Hinzufügen mit 'array_unshift'Entfernen mit 'array_shift'Indizierte Arrays zusammenführenAssoziative Arrays zusammenführenExtrahieren mit 'array_slice'Werte mit 'in_array'Schlüssel mit 'array_search'Rückblick: Playlist-Übung3Arrays sortieren
Indizierte Arrays aufsteigend sortierenIndizierte Arrays absteigend sortierenAssoziative Arrays nach Wert sortierenAssoziative Arrays nach Schlüssel sortierenNatürliche SortierungBenutzerdefiniertes Sortieren mit 'usort'Recap: Leaderboard-Sortierung