Programación en PHP, Javascript, Java, Python

Ordenando Arrays de manera natural con PHP – PHP Tips

PHP Programming languageAlgo que nos puede suceder a la hora de ordenar los valores almacenados en un array, es que si estos valores contienen números, al ordenarlo se nos muestra por ejemplo el 10 delante del 2. Esto sucede por que no ordenamos nuestro array de manera natural. Por ejemplo:


$array = array('img1.png', 'img2.png', img10.png', 'img20.png');

asort($array);

var_dump($array);

/* Devuelve
array(4) {
 [0] =>
 string(10) "img1.png"
 [2] =>
 string(11) "img10.png"
 [1] =>
 string(10) "img2.png"
 [3] =>
 string(11) "img20.png"
}
*/

La función asort ordena los valores del array manteniendo sus indices, tal como vemos en el resultado, y nos ordena los valores respecto al carácter. Esta función acepta otro parámetro llamado sort_flag con el cual podemos especificar que tipo de ordenación queremos. Si lo que queremos es que nos ordene de manera natural tenemos que usar la flag SORT_NATURAL


$array = array('img1.png', 'img2.png', img10.png', 'img20.png');

asort($array, SORT_NATURAL);

var_dump($array);

/* Devuelve
array(4) {
 [0] =>
 string(10) "img1.png"
 [1] =>
 string(10) "img2.png"
 [2] =>
 string(11) "img10.png"
 [3] =>
 string(11) "img20.png"
}
*/

Ahora podemos ver que nuestra array esta ordenada de una manera natural, es decir, el 10 viene detrás del 2.

Otra función, la cual podríamos considerarla como un alias de la anterior es natsort nos ordena de una manera natural directamente.

$array = array('img1.png', 'img2.png', img10.png', 'img20.png');

natsort($array,);

var_dump($array);

/* Devuelve
 array(4) {
 [0] =>
 string(10) "img1.png"
 [1] =>
 string(10) "img2.png"
 [2] =>
 string(11) "img10.png"
 [3] =>
 string(11) "img20.png"
 }
 */

Anuncio publicitario

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s