Obtenga los tres valores más altos de la matriz

Quiero obtener tres valores más altos de mi matriz, pero también debe clasificarse correctamente por claves.

Tengo este código:

 

El resultado de lo anterior es el siguiente:

 Array ( [1] => 1805 [2] => 1337 [0] => 130 ) 

Está funcionando bien, pero también quiero ordenar sus claves del valor más alto al más bajo.

Ejemplo:

 Array ( [2] => 1805 [1] => 1337 [0] => 130 ) 

Para que quede claro: quiero que sea ordenado por las teclas: la clave de matriz número 2 siempre se usará para el valor más alto , la clave de matriz número 0 siempre se usará para el valor más bajo.

¿Cómo puedo hacer eso?

/ hágamelo saber si no entiende algo.

 rsort($array); $top3 = array_reverse(array_slice($array, 0, 3)); 

Deberías usar array_reverse para esto.

  

De fácil acceso por $a[0] , $a[1] , $[2] para obtener sus valores más altos.

 $a = array(130, 1805, 1337); arsort($a); array_reverse($a); 

Produciría:

 Array ( [2] => 1807 [1] => 1337 [0] => 130 ) 

Puede encontrar más información al respecto aquí .

Lo intentaré:

  

No pude obtener el resultado que describió con ninguna de las respuestas ya publicadas (probado a través de IDEOne.com).


Aquí está mi solución ( demo ):

 $a = array(130, 1805, 1337); $keys = array_keys($a); rsort($keys, SORT_NUMERIC); $values = array_values($a); rsort($values, SORT_NUMERIC); $a = array_combine(array_slice($keys, 0, 3), array_slice($values, 0, 3)); print_r($a); 

Salida:

 Array ( [2] => 1805 [1] => 1337 [0] => 130 )