Menu
Coddy logo textTech

Tri par ordre naturel

Fait partie de la section Logique & Flux du Journey PHP de Coddy — leçon 24 sur 68.

Bien que les fonctions de tri standard de PHP fonctionnent bien dans la plupart des cas, elles peuvent produire des résultats inattendus lors du tri de chaînes de caractères contenant des nombres. La fonction natsort() résout ce problème en utilisant un algorithme d'« ordre naturel » qui trie les chaînes de la manière dont les humains s'y attendraient naturellement.

Considérez cet exemple avec des noms de fichiers :

<?php
$files = ["file1.txt", "file10.txt", "file2.txt", "file20.txt"];

// Regular sort() produces: file1.txt, file10.txt, file2.txt, file20.txt
sort($files);
print_r($files);

// Reset the array
$files = ["file1.txt", "file10.txt", "file2.txt", "file20.txt"];

// natsort() produces: file1.txt, file2.txt, file10.txt, file20.txt
natsort($files);
print_r($files);
?>

La différence est cruciale : le sort() classique compare les chaînes de caractères caractère par caractère, ainsi "file10.txt" arrive avant "file2.txt" car "1" arrive avant "2" en ASCII. Cependant, natsort() reconnaît les parties numériques et les trie numériquement, plaçant "file2.txt" avant "file10.txt" comme on s'y attendrait naturellement.

Comme d'autres fonctions de tri PHP, natsort() modifie directement le tableau d'origine. Cela le rend particulièrement utile pour organiser des listes de fichiers, des numéros de version ou toute donnée où les chaînes contiennent des nombres intégrés qui devraient être triés numériquement plutôt qu'alphabétiquement.

challenge icon

Défi

Facile

Vous recevrez une entrée : un tableau de numéros de version de logiciel au format JSON. Lisez l'entrée, convertissez la chaîne JSON en un tableau, utilisez natsort() pour trier les numéros de version dans l'ordre naturel, et affichez le tableau trié en utilisant print_r().

Format d'entrée : Une ligne contenant un tableau JSON de chaînes de version (exemple : ["v1.10","v1.2","v1.20","v1.3"])

Sortie attendue : Le tableau trié dans l'ordre naturel, affiché à l'aide de print_r()

Essayez vous-même

<?php
// Lire l'entrée
$input = fgets(STDIN);

// Convertir la chaîne JSON en tableau
$versions = (array)json_decode($input, true);

// TODO: Écrivez votre code ci-dessous pour trier le tableau en utilisant natsort()


// Afficher le tableau trié
print_r($versions);
?>
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique & Flux