Ordenar arrays asociativos en PHP: diferencia entre ksort y asort
Los arrays asociativos son estructuras de datos que PHP nos ofrece para poder almacenar datos asociados a una serie de claves, en lugar de a un índice numérico. En otros lenguajes, se les denomina tablas hash.
La ordenación de dichos arrays, es una de las operaciones básicas de cara a un correcto manejo de los mismos. Para poder llevar a cabo esa operación, PHP nos ofrece dos funciones: asort y ksort que vamos a explicar en esta entrada. Este tipo de array se utiliza muy a menudo al hacer consultas contra bases de datos, con funciones como mysql_fetch_array.
Creación del array
Antes de comenzar con el ejemplo, vamos a crear un vector de ejemplo (es una adaptación del ejemplo presente en la documentación oficial).
$fruits = array("d"=>"limón", "a"=>"naranja", "b"=>"plátano", "c"=>"manzana");
Ordenar con ksort
Ordena el array por su clave (key), de esta forma tendríamos (es interesante ver el uso de foreach en este código):
ksort($frutas); foreach ($frutas as $key => $val) { echo "$key = $val\n"; }
La salida sería:
- a = naranja
- b = plátano
- c = manzana
- d = limón
Ordenar con asort
Si lo que queremos es realizar la ordenación de forma que la referencia sea el valor, usaremos esta otra función:
asort($frutas); foreach ($frutas as $key => $val) { echo "$key = $val\n"; }
La salida esta vez sería:
- d = limón
- c = manzana
- a = naranja
- b = plátano
Ordenación en sentido inverso
A modo de curiosidad os indico cómo sería esta misma ordenación pero en sentido inverso, para cada caso tenemos una función:
- arsort
- krsort