Foros del Web » Programando para Internet » PHP »

odenar array

Estas en el tema de odenar array en el foro de PHP en Foros del Web. Hola gente, tengo un array asi: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original <? array (     [ Aventura ] => Array       ...
  #1 (permalink)  
Antiguo 21/02/2012, 12:45
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
odenar array

Hola gente, tengo un array asi:
Código PHP:
Ver original
  1. <?
  2.    [Aventura] => Array
  3.         (
  4.             [id_category] => 4
  5.             [yyy] => Array
  6.                 (
  7.                     [date] => 21/02/2012
  8.                     [name] => kkk
  9.                 )
  10.  
  11.         )
  12.  
  13.     [Diversion] => Array
  14.         (
  15.             [id_category] => 1
  16.             [xxx] => Array
  17.                 (
  18.                     [date] => 21/02/2012
  19.                     [name] => Bice
  20.                 )
  21.  
  22.         )
  23.  
  24. )
  25. ?>
la cuestion es que quiero ordenarlo por id_category de menor a mayor

gracias de antemano
  #2 (permalink)  
Antiguo 21/02/2012, 12:48
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: odenar array

Tienes muchas opciones para organizar arrays pero la que necesitas se llama SORT
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #3 (permalink)  
Antiguo 21/02/2012, 12:50
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: odenar array

creo que ksort te puede ser útil
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #4 (permalink)  
Antiguo 21/02/2012, 12:59
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: odenar array

gracias a los dos, eso ya lo sabemos todos.
pero como le digo a la funcion x que se ordene por array[x][y]?
  #5 (permalink)  
Antiguo 21/02/2012, 13:11
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: odenar array

Hola, que pena la respuesta tan tonta que te brinde...

Estuve buscando porque la verdad no se me ocurría nada para organizar ese "matriz" pero utilice google y me encontré un temita para organizar array bidimensionales con PHP que tal ves te pueda ayudar o dar una idea de como solucionar lo que planteas.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #6 (permalink)  
Antiguo 21/02/2012, 13:27
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: odenar array

Solamente necesitas usar la función array_multisort

Cita:
array_multisort — Ordena múltiples arrays, o arrays multi-dimensionales
Recorres el array con un foreach, agregas los ids por donde quieres ordenar (id_category) a un nuevo array y con la función array_multisort lo ordenas.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #7 (permalink)  
Antiguo 21/02/2012, 13:58
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
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.
  #8 (permalink)  
Antiguo 21/02/2012, 14:06
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: odenar array

Está buena la función ocp001a

para que le dé el resultado que quiere tendría que hacer

Código PHP:
Ver original
  1. ordena_mat($arr, 'id_category', 'DESC');

Para los casos que dices está perfecta pero para un array tan sencillo, yo no haría más que esto o menos:

Código PHP:
Ver original
  1. $ids = array();
  2.  
  3. foreach ($arr as $c => $v) {
  4.     $ids[$c] = $v['id_category'];
  5. }
  6.  
  7. array_multisort($ids, SORT_ASC, $arr);

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #9 (permalink)  
Antiguo 21/02/2012, 14:38
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: odenar array

perfecto ocp001a!!!,

gracias Andreszphp, pero en realidad venia mas fulera la cosa por eran mas arrays que asociar,
entonces en este caso me servia lo de ocp001a, yo solo puse la porcion de codigo en cuestion para no hacer esto engorroso

igual gracias a todos!
  #10 (permalink)  
Antiguo 21/02/2012, 14:49
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: odenar array

Creo que la podría poner en aportes.... ¿qué opinan?
  #11 (permalink)  
Antiguo 21/02/2012, 15:00
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: odenar array

seguro!
te aseguro que el array que estuve operando no era nada sencillo y asi y todo funciono ok.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:56.