Archivo de la etiqueta: arrays

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

Funciones de ordenación de Arrays – PHP Tips

Cuando empece a programar, uno de los ejercicios que teníamos que hacer era la ordenación por el método burbuja, el cual ahora mismo no recuerdo como se hacía, creo que se basaba en ir recorriendo la lista e ir almacenando el valor superior, luego este se volcada en otra lista, y no se qué más. Hoy en día los lenguajes de programación ya disponen de funciones que nos ordenan el array con solo invocarlas.
En PHP la mas conocida es short() la cual nos ordena el array en base a su valor de menor a mayor, pero hay que tener cuidado, ya que no mantiene el valor de las claves, y las renombra por unas numéricas. La función inversa de short() es rshort().
Si queremos ordenar y que nos mantenga el valor de las claves usaremos asort o arsort

Si lo que queremos es ordenar un array en base a sus claves usaremos ksort o su inversa que es krsort

Más información y funciones de ordenación de arrays http://www.php.net/manual/es/array.sorting.php