natcasesort
next
Fonctions sur les tableaux
PHP Manual

# natsort

(PHP 4, PHP 5)

natsort — Trie un tableau avec l'algorithme à "ordre naturel"

### Description

bool natsort ( array `&$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.

### Liste de paramètres

`array`

  Le tableau d'entrée.

### Valeurs de retour

Cette fonction retourne `TRUE` en cas de succès ou `FALSE` si une erreur survient.

### Historique

Version | Description
--- | ---
5.2.10 | Les chaines numériques alignées par des zéros (e.g., '00005') ignorent les zéros d'alignement.

### Exemples

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 : » Natural Order String Comparison.

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
    )

### Voir aussi

- natcasesort() - Trie un tableau avec l'algorithme à "ordre naturel" insensible à la casse
- Les fonctions de tri des tableaux
- strnatcmp() - Comparaison de chaînes avec l'algorithme d'"ordre naturel"
- strnatcasecmp() - Comparaison de chaînes avec l'algorithme d'"ordre naturel" (insensible à la casse)

natcasesort
next
Fonctions sur les tableaux
PHP Manual