Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP ordena mal un array multidimensional por número

Estas en el tema de PHP ordena mal un array multidimensional por número en el foro de PHP en Foros del Web. Buenas tengo un array multidimensional que se compone así: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original $array = ( "usuario1" => 100 , "usuario2" => 300 ...
  #1 (permalink)  
Antiguo 12/11/2015, 10:27
Avatar de Totti7  
Fecha de Ingreso: mayo-2012
Ubicación: barcelona
Mensajes: 28
Antigüedad: 12 años, 6 meses
Puntos: 2
PHP ordena mal un array multidimensional por número

Buenas tengo un array multidimensional que se compone así:
Código PHP:
Ver original
  1. $array=(
  2. "usuario1"=>100,"usuario2"=>300,"usuario3"=>1500, "usuario4"=>700, "usuario5"=>2000
  3. );

Ahora quiero ordernarlo por puntuación, es decir, por la segunda columna digamos.

Código PHP:
Ver original
  1. foreach ($array as $key => $row) {
  2.     $arraypuntuacion[$key] = $row['puntuacion'];
  3. }
  4. array_multisort($arraypuntuacion,SORT_DESC,$array);
  5. echo $arraypuntuacion[0]."</br>";
  6. echo $arraypuntuacion[1]."</br>";
  7. echo $arraypuntuacion[2]."</br>";
  8. echo $arraypuntuacion[3]."</br>";
  9. echo $arraypuntuacion[4]."</br>";
  10. echo $arraypuntuacion[5];

bien, yo los estoy ordenando de mayor a menor por puntuación, pero esto me devuelve lo siguiente:

700
300
2000
1500
100

El problema es que me ordena los numero según su primer número, en vez de si son mayores o no. Alguien sabe por que lo hace? lo lógico es que se ordenarán por tamaño no?
Gracias
  #2 (permalink)  
Antiguo 12/11/2015, 11:00
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: PHP ordena mal un array multidimensional por número

Saludo
Creo que falta código.
¿De donde sale row puntuación?

Probando así funciona.

Código PHP:
Ver original
  1. $array = array(
  2.     "usuario1"=>100,"usuario2"=>300,"usuario3"=>1500, "usuario4"=>700, "usuario5"=>2000
  3.     );
  4.     $i = 0;
  5.     foreach ($array as $key => $row) {
  6.         $arraypuntuacion[$i] = $row;
  7.         $i++;
  8.     }
  9.     array_multisort($arraypuntuacion,SORT_DESC,$array);
  10.     echo $arraypuntuacion[0]."</br>";
  11.     echo $arraypuntuacion[1]."</br>";
  12.     echo $arraypuntuacion[2]."</br>";
  13.     echo $arraypuntuacion[3]."</br>";
  14.     echo $arraypuntuacion[4]."</br>";

Obteniendo
Código HTML:
Ver original
  1. 2000
  2. 1500
  3. 700
  4. 300
  5. 100

__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Etiquetas: arrays, numeros, ordenacion
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:58.