Funciones de Arrays
PHP Manual

natsort

(PHP 4, PHP 5)

natsortOrdena un array usando un algoritmo de "orden natural"

Descripción

bool natsort ( array &$array )

Esta función implementa un algoritmo de ordenación que ordena las cadenas alfanuméricas en la manera en que lo haría un humano mientras mantiene las asociaciones de clave/valor. Es descrito como "ordenación natural". Un ejemplo de la diferencia entre este algoritmo y los algoritmos de ordenación normales de computadora (usados en sort()) se puede ver en el ejemplo de abajo.

Parámetros

array

El array de entrada.

Valores devueltos

Devuelve TRUE en caso de éxito o FALSE en caso de error.

Historial de cambios

Versión Descripción
5.2.10 Las cadenas numéricas rellenadas con ceros (p.ej., '00005') ahora ignoran el relleno de 0.

Ejemplos

Ejemplo #1 Ejemplos de natsort() demostrando su uso básico

<?php
$array1 
$array2 = array("img12.png""img10.png""img2.png""img1.png");

asort($array1);
echo 
"Ordenación estándar\n";
print_r($array1);

natsort($array2);
echo 
"\nOrdenación de orden natural\n";
print_r($array2);
?>

El resultado del ejemplo sería:

Ordenación estándar
Array
(
    [3] => img1.png
    [1] => img10.png
    [0] => img12.png
    [2] => img2.png
)

Ordenación de orden natural
Array
(
    [3] => img1.png
    [2] => img2.png
    [1] => img10.png
    [0] => img12.png
)

Para más información véase: la página de Martin Pool » Natural Order String Comparison.

Ejemplo #2 Ejemplos de natsort() demostrando trampas potenciales

<?php
echo "Números negativos\n";
$negativo = array('-5','3','-2','0','-1000','9','1');
print_r($negativo);
natsort($negativo);
print_r($negativo);

echo 
"Relleno de ceros\n";
$ceros = array('09''8''10''009''011''0'); 
print_r($ceros);
natsort($ceros);
print_r($ceros);

echo 
"Otros caracteres interfiriendo\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 
"Ordenar por claves\n";
$smoothie = array('naranja' => 1'manzana' => 1'yogur' => 4'banana' => 4);
print_r($smoothie);
uksort$smoothie'strnatcmp');
print_r($smoothie);
?>

El resultado del ejemplo sería:

Números negativos
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
)

Relleno de ceros
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
)

Otros caracteres interfiriendo
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
)

Ordenar por claves
Array
(
    [naranja] => 1
    [manzana] => 1
    [yogur] => 4
    [banana] => 4
)
Array
(
    [banana] => 4
    [manzana] => 1
    [naranja] => 1
    [yogur] => 4
)

Ver también


Funciones de Arrays
PHP Manual