Получите три самых высоких значения из массива

Я хочу получить три значения highes из моего массива, но их также нужно правильно отсортировать по клавишам.

У меня есть этот код:

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

Вышеуказанный результат следующий:

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

Он работает отлично, но я хочу, чтобы он дополнительно сортировал его ключи от самого высокого до самого низкого значения.

Пример:

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

Чтобы быть ясным: я хочу, чтобы он сортировался по клавишам: ключ массива номер 2 всегда будет использоваться для самого высокого значения, номер ключа массива 0 всегда будет использоваться для самого низкого значения.

Как я могу это сделать?

/ дайте мне знать, если вы что-то не понимаете.

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

Для этого вы должны использовать array_reverse .

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

Легко получить доступ к $a[0] , $a[1] , $[2] чтобы получить максимальные значения.

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

Будет производить:

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

Вы можете узнать больше об этом здесь .

Я бы попробовал:

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

Я не мог получить вывод, который вы описали, с любым из уже опубликованных ответов (проверено через IDEOne.com).


Вот мое решение ( 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); 

Вывод:

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