Le tri naturel est une méthode de tri selon l'ordre littéral des cordes. Contrairement au tri alphabétique traditionnel, Natsort () prend en compte la relation de taille des nombres. Par exemple:
file1.txt est devant File2.txt
file10.txt est classé derrière file2.txt
Cette méthode de tri est plus conforme à notre façon de penser quotidienne que le simple tri alphabétique.
Tout d'abord, nous avons besoin d'un tableau contenant des noms de fichiers. Généralement, nous pouvons utiliser la fonction scandir () pour obtenir tous les noms de fichiers dans un répertoire.
$files = scandir('path/to/your/directory');
Ce code renvoie un tableau contenant les noms de tous les fichiers et sous-répertoires dans le répertoire. Notez que Scandir () retournera deux répertoires spéciaux ,. et .. par défaut, nous devrons donc les filtrer.
Une fois que nous avons obtenu le tableau de nom de fichier, nous pouvons appeler la fonction Natsort () pour trier le tableau.
natsort($files);
Natsort () triera naturellement les noms de fichiers, de sorte que "file1.txt" est en avance sur "file10.txt".
Une fois le tri terminé, nous pouvons sortir le nom de fichier trié via une boucle Foreach .
foreach ($files as $file) {
echo $file . "\n";
}
De cette façon, vous pouvez voir une liste de noms de fichiers organisés par ordre naturel.
En combinant les étapes ci-dessus, le code final est le suivant:
<?php
// Obtenez tous les fichiers dans le répertoire
$files = scandir('path/to/your/directory');
// Retirer . et .. Table des matières
$files = array_diff($files, array('.', '..'));
// utiliser natsort Trier les noms de fichiers
natsort($files);
// Sortir le nom de fichier trié
foreach ($files as $file) {
echo $file . "\n";
}
?>
Supposons qu'il existe les fichiers suivants dans le répertoire:
file1.txt
file10.txt
file2.txt
file20.txt
Après le tri par Natsort () , la sortie sera:
file1.txt
file2.txt
file10.txt
file20.txt
La fonction Natsort () modifie directement le tableau d'origine, il n'est donc pas nécessaire d'attribuer une valeur au nouveau tableau avant d'appeler.
Si vous avez besoin d'un tri inversé, vous pouvez utiliser natsort () pour le trier, puis utiliser la fonction array_reverse () .
Natsort () est sensible à la casse et peut affecter le résultat de tri si le nom de fichier contient des lettres majuscules. Si vous devez ignorer le tri des cas, vous pouvez convertir le nom du fichier en minuscule ou en majuscule unifié avant d'appeler Natsort () .
Par exemple:
// Convertir le nom du fichier en minuscules
$files = array_map('strtolower', $files);
natsort($files);