### Tri par ordre naturel

Les fonctions de tri précédentes ne trient pas forcément correctement les tableaux dont les valeurs seraient des chaînes contenant des nombres. L'ordre dit naturel est celui que nous connaissons et utilisons dans la vie courante. Ainsi par exemple, "nombre 10" se trouvera classé après "nombre 2" (ce qui n'est pas le cas dans les tri d'ordre ASCII). Le tri par ordre naturel est par exemple particulièrement adapté pour le tri du contenu de dossiers et de fichiers.

Pour trier suivant un ordre naturel, PHP fournit les fonctions natsort() et natcasesort() (insensible aux majuscules/minuscules).

Exemple : tri par ordre naturel
<?php require('bib_fonctions.php'); htmlDebut('Tri naturel'); htmlInfo('Tableau initial'); $t[] = 'Fichier1.PHP'; $t[] = 'Fichier10.php'; $t[] = 'Fichier.php'; $t[] = 'Fichier5.php'; infoTableau($t); htmlInfo('Tri "normal" avec sort'); sort($t); infoTableau($t); htmlInfo('Tri naturel avec natsort'); natsort($t); infoTableau($t); htmlFin(); ?>

### Tri multiple

La fonction array_multisort() permet de trier en même temps des tableaux liés.

Imaginons un tableau avec des noms, un tableau avec les bureaux correspondants aux noms, et un tableau avec les téléphones correspondants aux noms. La fonction array_multisort() permettra de trier le tableau des noms, en gardant les correspondances dans les autres tableaux.

Exemple : tri multiple
<?php require('bib_fonctions.php'); htmlDebut('Tri multiple'); htmlInfo('Tableaux initiaux'); $nom = array('Pierre','Paul','Jacques'); $bureau = array('B41d','C24a','D12z'); $tel = array('03 83 66 20 18','03 83 66 20 54','03 83 66 20 08'); infoTableau($nom); infoTableau($bureau); infoTableau($tel); htmlInfo('Tri par nom/bureau/téléphone'); array_multisort($nom, $bureau, $tel); infoTableau($nom); infoTableau($bureau); infoTableau($tel); htmlInfo('Tri par téléphone/bureau/nom'); array_multisort($tel, $bureau, $nom); infoTableau($nom); infoTableau($bureau); infoTableau($tel); htmlFin(); ?>