Natürliche Art ist eine Methode zum Sortieren nach der wörtlichen Reihenfolge der Saiten. Im Gegensatz zur herkömmlichen alphabetischen Sortierung berücksichtigt Natsort () die Größenbeziehung von Zahlen. Zum Beispiel:
Datei1.txt befindet sich vor file2.txt
Datei10.txt ist hinter Datei2.txt eingestuft
Diese Sortiermethode entspricht mehr mit unserer täglichen Denkweise als mit einer einfachen alphabetischen Sortierung.
Zunächst benötigen wir ein Array mit Dateinamen. Im Allgemeinen können wir die Funktion Scandir () verwenden, um alle Dateinamen in einem Verzeichnis zu erhalten.
$files = scandir('path/to/your/directory');
Dieser Code gibt ein Array zurück, das die Namen aller Dateien und Unterverzeichnisse im Verzeichnis enthält. Beachten Sie, dass Scandir () zwei spezielle Verzeichnisse zurückgibt . und .. standardmäßig müssen wir sie möglicherweise filtern.
Sobald wir das Dateiname -Array erhalten haben, können wir die Funktion natsort () aufrufen, um das Array zu sortieren.
natsort($files);
natsort () sortiert die Dateinamen auf natürliche Weise, so dass "Datei1.txt" vor "Datei10.txt" voraus ist.
Nach Abschluss der Sortierung können wir den sortierten Dateinamen über foreach Loop ausgeben.
foreach ($files as $file) {
echo $file . "\n";
}
Auf diese Weise können Sie eine Liste von Dateinamen sehen, die in natürlicher Reihenfolge angeordnet sind.
Kombinieren Sie die obigen Schritte und der endgültige Code lautet wie folgt:
<?php
// Holen Sie sich alle Dateien im Verzeichnis
$files = scandir('path/to/your/directory');
// Entfernen . Und .. Inhaltsverzeichnis
$files = array_diff($files, array('.', '..'));
// verwenden natsort Dateinamen sortieren
natsort($files);
// Ausgeben des sortierten Dateinamens
foreach ($files as $file) {
echo $file . "\n";
}
?>
Angenommen, es gibt die folgenden Dateien im Verzeichnis:
file1.txt
file10.txt
file2.txt
file20.txt
Nach dem Sortieren nach Natsort () wird der Ausgang sein:
file1.txt
file2.txt
file10.txt
file20.txt
Die Funktion natsort () modifiziert das ursprüngliche Array direkt, sodass dem Neuarray keinen Wert zuweisen muss.
Wenn Sie umgekehrte Sortierung benötigen, können Sie Natsort () verwenden, um es zu sortieren und dann die Funktion array_reverse () zu verwenden.
natsort () ist fälschlichempfindlich und kann das Sortierergebnis beeinflussen, wenn der Dateiname Großbuchstaben enthält. Wenn Sie die Fallsortierung ignorieren müssen, können Sie den Dateinamen in einen einheitlichen Kleinbuchstaben oder Großbuchstaben konvertieren, bevor Sie Natsort () aufrufen.
Zum Beispiel:
// Dateinamen in Kleinbuchstaben konvertieren
$files = array_map('strtolower', $files);
natsort($files);