Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Ordenar una matriz por columnas

Estas en el tema de Ordenar una matriz por columnas en el foro de PHP en Foros del Web. Hola, esta comunidad siempre me ha ayudado mucho y voy a ver si podemos resolver este pequeño problema =) partiendo de lo siguiente: Código PHP: ...
  #1 (permalink)  
Antiguo 12/02/2016, 03:35
 
Fecha de Ingreso: marzo-2013
Mensajes: 79
Antigüedad: 11 años
Puntos: 2
Ordenar una matriz por columnas

Hola, esta comunidad siempre me ha ayudado mucho y voy a ver si podemos resolver este pequeño problema =)

partiendo de lo siguiente:
Código PHP:
$i =0;
//recorre la matriz de la consulta $catcal
while($filas mysql_fetch_array($catcal)) {

  
//creo la matriz $row
   
$row[$i] = array($categoria$calidad$precio);
    
$i $i+1;

lo que quiero ahora, es ordenar la matriz row por precio es decir que esté ordenada de por la columna 2 "$row[$i][2].

Hay alguna función creada para hacerlo? quiero ordenar esta matriz y mostrarla por pantalla.

Gracias de antemano.
  #2 (permalink)  
Antiguo 12/02/2016, 04:22
 
Fecha de Ingreso: marzo-2013
Mensajes: 79
Antigüedad: 11 años
Puntos: 2
Respuesta: Ordenar una matriz por columnas

Lo he intentado con lo siguiente:
Código PHP:
//creando la matriz ordenada
for ($n=0$n<$i$n++){
    
$mayor 0;//buscamos el mayor
    
for($k=0$k<$i$k++) {
    
        if(
$row[$k][4] > $mayor){
            
$lugar $k//me guardo la posición del mayor
            
$mayor $row[$k][4]; //me guardo el valor mas alto
            
$row_mayor $row[$k]; //guardo la array que tiene el valor mas alto
        
}
    }
//tenemos el mayor, lo metemos donde toca
$array_ordenada[$n]=$row_mayor;
$row[$lugar][4] = 0// le doy valor 0 a la array vieja para evitar volverla a poner en el lugar mas alto

aparentemente sale ordenada, pero el problema es que me repite números y hay algunos que no salen, por lo que se que no va bien, pero creo que voy encaminado
  #3 (permalink)  
Antiguo 12/02/2016, 04:53
 
Fecha de Ingreso: marzo-2013
Mensajes: 79
Antigüedad: 11 años
Puntos: 2
Respuesta: Ordenar una matriz por columnas

ya he encontrado el problema, me comparaba números negativos con 0 y entonces, como 0 es mayor que negativo, me repetía en las ultimas posiciones el último mayor que 0 encontrado. para solucionarlo cambiamos los valores de 0 por -100 como muestro en el siguiente script:

Código PHP:

//ordenamos la array

//creando la matriz ordenada
for ($n=0$n<$i$n++){
    
$mayor = -100;//buscamos el mayor

    
for($k=0$k<$i$k++) {
        if(
$row[$k][4] >= $mayor){
            
$lugar $k//me guardo la posición del mayor
            
$mayor $row[$k][4]; //me guardo el valor mas alto
            
$row_mayor $row[$k]; //guardo la array que tiene el valor mas alto
        
}
    }
//tenemos el mayor, lo metemos donde toca
$array_ordenada[$n]=$row_mayor;
$row[$lugar][4] = -100// le doy valor -100 a la array vieja para evitar volverla a poner en el lugar mas alto

  #4 (permalink)  
Antiguo 12/02/2016, 05:32
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Ordenar una matriz por columnas

Y pregunto yo...

¿No sería más sencillo ordenarlo en la query con un
Código SQL:
Ver original
  1. ORDER BY precio
?

:)
__________________
>> Eleazan's Source
>> @Eleazan
  #5 (permalink)  
Antiguo 12/02/2016, 15:33
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 4 meses
Puntos: 20
Respuesta: Ordenar una matriz por columnas

Hola amigo,
jajaja, iba a sugerir lo mismo que Eleazan
No es más fácil hacer todo ordenamiento a través de tu consulta???
A no ser que tu arreglo lo obtengas o generes por otro medio q no sea una consulta... no le veo sentido hacer un algoritmo de ornedamiento
Saludos!
  #6 (permalink)  
Antiguo 15/02/2016, 03:44
 
Fecha de Ingreso: marzo-2013
Mensajes: 79
Antigüedad: 11 años
Puntos: 2
Respuesta: Ordenar una matriz por columnas

no puedo, porque los datos los saco de distintas consultas y quería ordenar la matriz con unos campos calculados pero no quería ponerlo complicado por aquí, pero gracias =)

Etiquetas: columnas, matriz, mysql
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 12:43.