Asier Marqués

Hablando sobre tecnologías web y otras cosas que me interesan
Archivado como Desarrollo Web, PHP

Algunas veces disponemos de un array que contiene a su vez varios arrays asociativos, que contienen por ejemplo datos obtenidos tras una consulta a la base de datos.

Puede que dicho array esté cacheado y no queramos atacar a la base de datos para ordenar esos resultados, por lo que nos vendría genial poder ordenar los arrays asociativos que contenga dicho array, en base a los valores que contenga una de las claves de los mismos.

Lo vemos más claro en un ejemplo. Tenemos el siguiente array:


$resultados = array(

array(

'id' => 1,
'nombre' => 'Enjuto',
'apellido' => 'Mojamuto'

),

array(

'id' => 2,
'nombre'  => 'Marlo',
'apellido'  => 'Brando'

)

);

En php disponemos de la función usort(), que ordena en base a una función de comparación que nosotros especifiquemos.

Por ejemplo si quisiéramos ordenar en base a la clave id, en orden descendiente, la función sería:


function comparar($x, $y){

if ( $x['id'] == $y['id'] )
return 0;
else if ( $x['id'] > $y['id'] )
return -1;
else
return 1;

}

Y ahora llamamos a usort para que utilice dicha función:


//si no estamos en un entorno Orientado a Objetos

usort($resultados, array('comparar'));

//si estamos en un entorno Orientado a Objetos

usort($resultados, array('nombreDeClase','comparar'));
Comentarios (2) Publicado por Asier Marqués el Miércoles, 29 de Octubre del 2008


Puedes seguir los comentarios de ésta entrada via "RSS 2.0" y dejar un trackback desde tu sitio.

2 Respuestas to “Ordenar arrays multidimensionales en base a una clave asociativa con php”

Añade un comentario