(PHP 4, PHP 5, PHP 7, PHP 8)
natsort — Ordena un array con el algoritmo de "orden natural"
natsort() implementa un algoritmo
de ordenación que trata las cadenas alfanuméricas del array
array
como lo haría un ser humano,
conservando la relación clave/valor. Esto se conoce como
"orden natural". Un ejemplo de la diferencia de tratamiento
entre tal algoritmo y un algoritmo de ordenación de cadenas
(como cuando se utiliza sort()) se ilustra a continuación.
Nota:
Si dos miembros se comparan como iguales, ellos mantendrán su orden original. Antes de PHP 8.0.0, su orden relativo en un array ordenado era indefinido.
Nota:
Reinicia el puntero interno del array al primer elemento.
array
El array de entrada.
Siempre devuelve true
.
Versión | Descripción |
---|---|
8.2.0 |
The return type is true now; previously, it was bool.
|
Ejemplo #1 Ejemplo de uso básico con natsort()
<?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 en 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 en orden natural Array ( [3] => img1.png [2] => img2.png [1] => img10.png [0] => img12.png )
Para más detalles, visite el sitio de Martin Pool sobre » la comparación de cadenas en orden natural.
Ejemplo #2 Ejemplos que muestran las trampas de natsort()
<?php
echo "Números negativos\n";
$negative = array('-5','3','-2','0','-1000','9','1');
print_r($negative);
natsort($negative);
print_r($negative);
echo "Alineación con ceros\n";
$zeros = array('09', '8', '10', '009', '011', '0');
print_r($zeros);
natsort($zeros);
print_r($zeros);
?>
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 ) Alineación con 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 )