Я хочу получить три значения 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); ?>