(PHP 4, PHP 5)
natsort — Trie un tableau avec l'algorithme à "ordre naturel"
&$array
)
natsort() implémente un algorithme
de tri qui traite les chaînes alphanumériques du tableau
array comme un être humain tout en
conservant la relation clé/valeur. C'est ce qui est appelé
l'"ordre naturel". Un exemple de la différence de traitement
entre un tel algorithme et un algorithme de tri de chaînes
(comme lorsqu'on utilise sort()) est
illustré ci-dessous.
array
Le tableau d'entrée.
Cette fonction retourne TRUE en cas de
succès ou FALSE si une erreur survient.
| Version | Description |
|---|---|
| 5.2.10 | Les chaines numériques alignées par des zéros (e.g., '00005') ignorent les zéros d'alignement. |
Exemple #1 Exemple d'utilisation de base avec natsort()
<?php
$array1 = $array2 = array("img12.png", "img10.png", "img2.png", "img1.png");
asort($array1);
echo "Standard sorting\n";
print_r($array1);
natsort($array2);
echo "\nNatural order sorting\n";
print_r($array2);
?>
L'exemple ci-dessus va afficher :
Standard sorting
Array
(
[3] => img1.png
[1] => img10.png
[0] => img12.png
[2] => img2.png
)
Natural order sorting
Array
(
[3] => img1.png
[2] => img2.png
[1] => img10.png
[0] => img12.png
)
Pour plus de détails, rendez-vous sur le site de Martin Pool sur » la comparaison de chaînes en ordre naturel.
Exemple #2 Exemples montrant les pièges de natsort()
<?php
echo "Nombres négatifs\n";
$negative = array('-5','3','-2','0','-1000','9','1');
print_r($negative);
natsort($negative);
print_r($negative);
echo "Alignement avec zéros\n";
$zeros = array('09', '8', '10', '009', '011', '0');
print_r($zeros);
natsort($zeros);
print_r($zeros);
echo "Autres caractères pouvant interférer\n";
$images_oops = array('image_1.jpg','image_12.jpg', 'image_21.jpg', 'image_4.jpg');
print_r($images_oops);
natsort($images_oops);
print_r($images_oops);
echo "Tri par clés\n";
$smoothie = array('orange' => 1, 'apple' => 1, 'yogurt' => 4, 'banana' => 4);
print_r($smoothie);
uksort( $smoothie, 'strnatcmp');
print_r($smoothie);
?>
L'exemple ci-dessus va afficher :
Nombres négatifs
Array
(
[0] => -5
[1] => 3
[2] => -2
[3] => 0
[4] => -1000
[5] => 9
[6] => 1
)
Array
(
[2] => -2
[0] => -5
[4] => -1000
[3] => 0
[6] => 1
[1] => 3
[5] => 9
)
Alignement avec zéros
Array
(
[0] => 09
[1] => 8
[2] => 10
[3] => 009
[4] => 011
[5] => 0
)
Array
(
[5] => 0
[1] => 8
[3] => 009
[0] => 09
[2] => 10
[4] => 011
)
Autres caractères pouvant interférer
Array
(
[0] => image_1.jpg
[1] => image_12.jpg
[2] => image_21.jpg
[3] => image_4.jpg
)
Array
(
[0] => image_1.jpg
[3] => image_4.jpg
[1] => image_12.jpg
[2] => image_21.jpg
)
Tri par clés
Array
(
[orange] => 1
[apple] => 1
[yogurt] => 4
[banana] => 4
)
Array
(
[apple] => 1
[banana] => 4
[orange] => 1
[yogurt] => 4
)