Foros del Web » Programando para Internet » PHP »

Ordenar arrays multidimensional

Estas en el tema de Ordenar arrays multidimensional en el foro de PHP en Foros del Web. Hola a ver si alguien puede echarme una mano tengo una matriz de datos rellenada del tipo: Cita: $Matriz= array(); for ($j = 0; $j<sizeof($Pt); ...
  #1 (permalink)  
Antiguo 10/10/2012, 03:54
 
Fecha de Ingreso: septiembre-2009
Mensajes: 84
Antigüedad: 14 años, 8 meses
Puntos: 2
Ordenar arrays multidimensional

Hola a ver si alguien puede echarme una mano


tengo una matriz de datos rellenada del tipo:

Cita:
$Matriz= array();
for ($j = 0; $j<sizeof($Pt); $j++){
$Matriz[0][$j]=$PL[$j]; //Rango de potencias
$Matriz[1][$j]=round($R[$j],2); //Refraccion
$Matriz[2][$j]=round($A[$j],2); //Aumento lente
$Matriz[3][$j]=round($B[$j],2); //Aumento lente
}
Estoy intentando ordenarla de menor a mayor en base a una columna por ejemplo la 1 ($Matriz[1])

He probado con

array_multisort(columnaAordenar, SORT_ASC, $Matriz);

pero no lo hace bien, en vez de ordenar los valores del de cada uno de los vectores ordena el nivel superior, no se si me explico
  #2 (permalink)  
Antiguo 10/10/2012, 09:30
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años, 1 mes
Puntos: 33
Respuesta: Ordenar arrays multidimensional

Buenas!

No se si entiendo muy bien...

Digamos que tienes:

Código:
[0][0] = 10
[0][1] = 1
[1][0] = 54
[1][1] = 23
[2][0] = 2
[2][1] = 123
Entonces quieres que quede ordenado por grupos, digamos que:

Código:
[0][1] = 1
[0][0] = 10
[1][1] = 23
[1][0] = 54
[2][0] = 2
[2][1] = 123
Así?

Para eso tienes que montar dos bucles (uno por cada dimensión) y hacer algo así:

Código PHP:
Ver original
  1. bucle ext{
  2.     bucle int{
  3.         ordenas bucle int
  4.     }
  5. }

Saludos

Etiquetas: arrays, multidimensional
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 14:11.