【问题标题】:How to get the keys with highest values in a php array [closed]如何在php数组中获取具有最高值的键[关闭]
【发布时间】:2012-06-01 12:51:31
【问题描述】:

我有这个数组...

Array (
[1168] => 46
[6973] => 27
[4585] => 24
[1224] => 23
[2010] => 20
[7514] => 19
[1167] => 17
[8349] => 7
[2476] => 7
[5313] => 7
[1208] => 2
)

而且我需要获取前一个数组中值最高的三个键(作为值):

Array (
[0] => 1168
[1] => 6973
[2] => 4585
)

【问题讨论】:

  • 没有循环就无法迭代数组。想一想。
  • 这是homework吗?如果是,请使用标签homework。它不会阻止 SO 人提供答案,而是会尝试为您提供更有见地的答案。
  • minitech,我认为可以分别使用 Hashmaps 或 Hashes 在 Java 或 Ruby 中做到这一点。我只是想知道这在 PHP 中是否可行。
  • 这不是有史以来最好的问题,但我认为它不应该因为过于简单而值得 -7 票(是的,我也对“游戏”感到失望)但 +1反作用。

标签: php


【解决方案1】:

数组总是按降序排列吗?如果没有,你需要先arsort($arr)它:

$highest_keys = array_keys(array_slice($arr, 0, 3));

【讨论】:

  • 谢谢,我已经编辑了问题名称,虽然有点晚了
【解决方案2】:

已编辑:

$a = array('foo' => 3, 'bar' => 2, 'fuz' => 1, 'baz' => 0);
$k = array_keys(array_slice($a, 0, 3));
print_r($k);

CodePad

【讨论】:

  • 排序的不是键,而是值。
  • 好吧,我的数组已经排序好了。除了 sort($k) 之外,其余的都很完美。谢谢!
  • @FelixKling 我错过了这个世界highest values。我认为这是他想要的最高钥匙。我相应地更新了代码 =)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
  • 2014-05-29
  • 2015-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多