Ordenar arreglo multidimencional (fecha, hora)
Algo que me paso recientemente y lo quiero compartir.
Puede ocurrir durante un desarrollo que necesitemos ordenar solo arreglo multidimencional que se genera de varias consultas de diferentes tablas. Además de eso lo queremos ordenar por dos campos diferentes algo como un order by fecha, hora.
Bueno en el ejemplo siguiente explico un poco como solucionar este problema.
Asumimos que tenemos un arreglo algo parecido a esto:
$acciones = array(array(’nombre’=>’opcion1′, ‘fecha’=>’2008-02-20′, ‘hora’=>’13:45:23′), array(’nombre’=>’opcion2′, ‘fecha’=>’2008-01-20′, ‘hora’=>’13:35:00′),array(’nombre’=>’opcion3′, ‘fecha’=>’2008-01-20′, ‘hora’=>’10:15:00′),array(’nombre’=>’opcion3′, ‘fecha’=>’2008-02-20′, ‘hora’=>’18:25:10′))
Ahora procedemos a ordenar por fecha y luego por hora
foreach ($acciones as $llave => $fila) {
$fecha[$llave] = $fila['fecha'];
$hora[$llave] = $fila['hora'];
}
array_multisort($fecha, SORT_DESC, $hora, SORT_DESC, $acciones);
Lo que hicimos fue recorrer el arreglo original, creando arreglos por los campos que se desean ordenar, luego de esto aplicamos el array_multisort, en nuestro ejemplo los campos se ordenan de forma descendente, estos parámetros pudieran cambiar según se especifica el la documentación de array_multisort.
Espero le sirva de ayuda.


















Facebook
Twitter
LinkedIn