Inicio > Php > Ordenar arreglo multidimencional (fecha, hora)

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.

Compartir información en: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • MisterWong
  • Y!GG
  • Webnews
  • Digg
  • del.icio.us
  • StumbleUpon
  • Reddit
  • Ask
  • De.lirio.us
  • Facebook
  • LinkedIn
  • Live-MSN
  • MySpace
  • YahooMyWeb
  • email
  • Google Bookmarks
  • TwitThis
  • YahooBuzz
  1. Sin comentarios aún.
  1. Sin trackbacks aún.