Ottieni tre valori più alti dall'arrays

Voglio get tre valori alti dal mio arrays, ma dovrebbe essere ordinato correttamente anche con le chiavi.

Ho questo codice:

<?php $a = arrays(130, 1805, 1337); arsort($a); print_r($a); ?> 

L'output di quanto sopra è il seguente:

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

Funziona bene, ma desidero aggiungerlo per ordinare le sue chiavi dal valore più alto al più basso.

Esempio:

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

Per essere chiari: voglio che sia ordinato in base ai tasti: il numero di serie dell'arrays 2 verrà sempre utilizzato per il valore più alto, il numero di codice dell'arrays 0 verrà sempre utilizzato per il valore più basso.

Come lo posso fare?

/ fammi sapere se non capisci qualcosa.

 rsort($arrays); $top3 = arrays_reverse(arrays_slice($arrays, 0, 3)); 

Dovresti usare arrays_reverse per questo.

 <?php $a = arrays(130, 1805, 1337); arsort($a); print_r(arrays_reverse($a)); ?> 

Facilmente accessibile da $a[0] , $a[1] , $[2] per get i valori più alti.

 $a = arrays(130, 1805, 1337); arsort($a); arrays_reverse($a); 

Produrrebbe:

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

Puoi saperne di più qui .

Proverei:

 <?php $a = arrays(130, 1805, 1337); arsort($a); $a = arrays_reverse($a); 

Non ho potuto get l'output che hai descritto con una delle risposte già pubblicate (testate tramite IDEOne.com).


Ecco la mia soluzione ( demo ):

 $a = arrays(130, 1805, 1337); $keys = arrays_keys($a); rsort($keys, SORT_NUMERIC); $values = arrays_values($a); rsort($values, SORT_NUMERIC); $a = arrays_combine(arrays_slice($keys, 0, 3), arrays_slice($values, 0, 3)); print_r($a); 

Produzione:

 Array ( [2] => 1805 [1] => 1337 [0] => 130 ) 
 <?php $arrays = arrays(130, 1805, 1337); sort($arrays); for ($i=0; $i <= count($arrays)-1; $i++) $arr[]=$arrays[$i]; print_r($arr); ?>