从数组中获取三个最高值

时间:2012-03-30 01:02:36

标签: php arrays sorting

我想从我的数组中获得三个高值,但它也应该通过键正确排序。

我有这段代码:

<?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 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:2)

您应该使用array_reverse

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

$a[0]$a[1]$[2]轻松访问,以获取最高价值。

答案 2 :(得分:1)

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

会产生:

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

您可以找到有关它的更多信息here

答案 3 :(得分:0)

我会尝试:

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

答案 4 :(得分:0)

我无法使用已发布的任何答案(通过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
)

答案 5 :(得分:0)

<?php 

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

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

?>