Получить три максимальных значения из массива - PullRequest
4 голосов
/ 30 марта 2012

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

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

<?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 всегда будет использоваться для значения самое низкое .

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

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

Ответы [ 6 ]

7 голосов
/ 30 марта 2012
rsort($array);
$top3 = array_reverse(array_slice($array, 0, 3));
2 голосов
/ 30 марта 2012

Для этого следует использовать array_reverse.

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

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

1 голос
/ 30 марта 2012
$a = array(130, 1805, 1337);
arsort($a);
array_reverse($a);

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

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

Подробнее об этом можно узнать здесь .

0 голосов
/ 12 ноября 2013
<?php 

$array = array(130, 1805, 1337);
sort($array);
for ($i=0; $i <= count($array)-1; $i++)

      $arr[]=$array[$i];
      print_r($arr);

?>
0 голосов
/ 31 марта 2012

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


Вот мое решение ( демо ):

$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
)
0 голосов
/ 30 марта 2012

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

<?php
$a = array(130, 1805, 1337); 
arsort($a);
$a = array_reverse($a);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...