2011-09-14 76 views
-1

我有一个列表中的约50项。我使用algorythm计算它们的值,并将它们的值添加到数组中。PHP:阵列订购

想我得到这个当循环结束:

$vals = (51, 23, 77, 3, 8, 31, 17, 102, 87, (...)); 

现在,我怎么能得到他们的3个最高值的键数组中?

在上述例子中,我想获得:

  • 8(102键)
  • 9(87键)
  • 3(77键)

PS:我不想在数据库中插入这些数据,然后用Order子句选择它们,我相信有一个更简单的方法。

回答

6
$vals = array(51, 23, 77, 3, 8, 31, 17, 102, 87); 
arsort($vals);  
$keys = array_slice(array_keys($vals), 0, 3); 

var_dump($keys); // array(3) { [0]=> int(7) [1]=> int(8) [2]=> int(2) } 

结果是不是你想要得到一样的,因为在PHP中的数组是0索引

+0

哇,这很快!非常感谢您的帮助。 –

+0

如何获取密钥而不是值? –

2

排序他们降,提取3.第一的价值观,做!

arsort($vals); 
echo "$vals[0], $vals[1], $vals[2]";