Tema: odenar array
Ver Mensaje Individual
  #7 (permalink)  
Antiguo 21/02/2012, 13:58
ocp001a
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: odenar array

Hace tiempo que tuve la necesidad de ordenar una matriz multidimensional irregular, tenía tantos índices asociativos que el multisort no me funcionada como quería, y realicé dos funciones para poder ordenarlos tanto por índice como por valor.

Te paso la función para ordenar por valor, lo probé con tu array y funciona:


Código PHP:
Ver original
  1. function ordena_mat($mat,$col,$aod="ASC"){
  2.     foreach($mat as $k =>$val){
  3.         if($k!=$col)
  4.             $ord[$k]=$val;
  5.         else
  6.             return $mat;
  7.     }
  8.     if($aod=="ASC")
  9.         arsort($ord);
  10.     else
  11.         asort($ord);
  12.     foreach($ord as $k=>$nms)
  13.         $mat2[$k]=$mat[$k];
  14.     foreach($mat2 as $k =>$val){
  15.         if(is_array($val))
  16.             $val=ordena_mat($val,$col,$aod);
  17.         $mat2[$k]=$val;
  18.     }
  19.     return $mat2;
  20. }
  21. //no creo que falte aclararlo, pero se manda a llamar así:
  22.  
  23. $mi_array=ordena_mat($mi_array,'indice');

Puede ordenar matrices tan profundas como sean, pues es recursiva.