Ver Mensaje Individual
  #5 (permalink)  
Antiguo 11/04/2013, 03:06
Avatar de Kamae
Kamae
 
Fecha de Ingreso: abril-2008
Ubicación: Barcelona (Catalunya)
Mensajes: 307
Antigüedad: 16 años, 9 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!