Foros del Web » Programando para Internet » PHP »

como ordenar porcentajes en variables?

Estas en el tema de como ordenar porcentajes en variables? en el foro de PHP en Foros del Web. buenas! pues tengo este problema... tengo 30 variables que contienen diferentes porcentajes de miembros de un club y quiero que se presenten en pantalla en ...
  #1 (permalink)  
Antiguo 08/04/2013, 03:51
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años, 7 meses
Puntos: 23
Pregunta como ordenar porcentajes en variables?

buenas!

pues tengo este problema... tengo 30 variables que contienen diferentes porcentajes de miembros de un club y quiero que se presenten en pantalla en orden descendente.. osea del mayor porcentaje al menor...
cabe aclarar que los datos salen de una base de datos y la consulta ya esta hecha.
Existe algun comando o manera de hacer eso en php?

de antemano gracias!!

Saludos!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #2 (permalink)  
Antiguo 08/04/2013, 04:18
Avatar de Kamae  
Fecha de Ingreso: abril-2008
Ubicación: Barcelona (Catalunya)
Mensajes: 307
Antigüedad: 16 años, 6 meses
Puntos: 13
Respuesta: como ordenar porcentajes en variables?

Hola buenas

Lo fácil sería que si los sacas de una base de datos, te los den ordenados desde ahí usando el "ORDER BY x DESC", pero entiendo que esto no te es posible por la razón que sea.

Entonces se me ocurre que podrías, en vez de guardarlo en 30 variables, guardarlo en un array. Si tampoco te es posible, pasa las 30 variables a un array con array_push() mismo, y luego lo ordenas con sort(), aunque creo que te lo da en orden ascendente. Pero vaya si lo quieres presentar inverso con hacer algo así te vale:

Código PHP:
for($i=count($mi_array);$i>=0;$i--){
   echo 
$mi_array[$i]."<br/>";

Espero que te sirva, saludos!
  #3 (permalink)  
Antiguo 09/04/2013, 19:14
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años, 7 meses
Puntos: 23
Respuesta: como ordenar porcentajes en variables?

buenas Kamae!

Antes que nada Gracias por responder...
no se me habia ocurrido lo de los Arrays y esta bien tu idea pero me surge una duda...
cada variable corresponde a una colonia de la ciudad
por ejemplo

colonia 1 = $col1; //nombre de la colonia
valor 1 = $val1; //valor de miembros en esa colonia para sacar porcentaje

el valor como ya dijiste con sort() quedaria... ahora como enlazaria un valor con un nombre si ambos son dinamicos?
me explico mejor.. que si la colonia 30 tiene mayor porcentaje se mueva tambien el nombre junto con el valor... y no solo el valor....

saludos!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #4 (permalink)  
Antiguo 09/04/2013, 22:19
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 15 años, 4 meses
Puntos: 27
Respuesta: como ordenar porcentajes en variables?

Cita:
Iniciado por HalconVigia Ver Mensaje
buenas Kamae!

Antes que nada Gracias por responder...
no se me habia ocurrido lo de los Arrays y esta bien tu idea pero me surge una duda...
cada variable corresponde a una colonia de la ciudad
por ejemplo

colonia 1 = $col1; //nombre de la colonia
valor 1 = $val1; //valor de miembros en esa colonia para sacar porcentaje

el valor como ya dijiste con sort() quedaria... ahora como enlazaria un valor con un nombre si ambos son dinamicos?
me explico mejor.. que si la colonia 30 tiene mayor porcentaje se mueva tambien el nombre junto con el valor... y no solo el valor....

saludos!!
Si los nombres de las colonias son unicos, ponelos como clave del valor dentro del array,
  #5 (permalink)  
Antiguo 11/04/2013, 03:06
Avatar de Kamae  
Fecha de Ingreso: abril-2008
Ubicación: Barcelona (Catalunya)
Mensajes: 307
Antigüedad: 16 años, 6 meses
Puntos: 13
Respuesta: como ordenar porcentajes en variables?

Hola HalconVigia

Creo que la solución de luis010182 es bien válida, si tienes el array del tipo $mi_array['Barcelona']=33; cuando ordenes los valores (33) te mantendrá el índice si lo ordenas con arsort() por ejemplo (aquí tienes un listado de los tipos que puedes usar, aunque yo creo que tu caso concreto es arsort())

Aun así tenía curiosidad por si se podía ordenar un array multidimensional por su segundo valor en vez del primero. Al final he encontrado cositas y he hecho un código de prueba donde se ve bien. Creo que te servirá:

Código PHP:
$arr=array(); // Creamos un array
// Le indicamos 5 posiciones, que contendrán otro array dentro
$arr[0]=array();$arr[1]=array();$arr[2]=array();$arr[3]=array();$arr[4]=array();

// La posición 0 será nombre de ciudad y la posición 1 el porcentaje de lo que sea
$arr[0][0]="Barcelona";$arr[0][1]="13";
$arr[1][0]="Madrid";$arr[1][1]="30";
$arr[2][0]="Vitoria";$arr[2][1]="3";
$arr[3][0]="Zaragoza";$arr[3][1]="21";
$arr[4][0]="Antequera";$arr[4][1]="11";

print_r($arr); // Imprimimos el array original
echo "<br/><br/>";
print_r(aSortBySecondIndex($arr,1)); // Imprimimos el array ordenado por su segundo parámetro

// Esta función la he encontrado en los comentarios del manual de asort()
function aSortBySecondIndex($multiArray$secondIndex) { 
    while (list(
$firstIndex, ) = each($multiArray)) 
        
$indexMap[$firstIndex] = $multiArray[$firstIndex][$secondIndex]; 
    
asort($indexMap); // asort=Ascendente, arsort= Descendente
    
while (list($firstIndex, ) = each($indexMap)) 
        if (
is_numeric($firstIndex)) 
            
$sortedArray[] = $multiArray[$firstIndex]; 
        else 
$sortedArray[$firstIndex] = $multiArray[$firstIndex]; 
    return 
$sortedArray

Pero repito, yo creo que lo más sencillo es usar la solución de luis, pero por si acaso no te es posible ahí tienes otra.

Saludos!

Etiquetas: porcentajes, variables
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:05.