Php 数组中最高值的返回索引

Php 数组中最高值的返回索引,php,arrays,Php,Arrays,从如下所示的数组中,如何获取数组中最高值的索引。对于下面的数组,期望的结果是“11” Array ( [11] => 14 [10] => 9 [12] => 7 [13] => 7 [14] => 4 [15] => 6 ) 我的解决办法是: $maxs = array_keys($array, max($array)) 注意: 通过这种方式,您可以检索与给定最大值相关的每个键 如果您只对其中一个键感兴趣,

从如下所示的数组中,如何获取数组中最高值的索引。对于下面的数组,期望的结果是“11”

Array (
    [11] => 14
    [10] => 9
    [12] => 7
    [13] => 7
    [14] => 4
    [15] => 6
)
我的解决办法是:

$maxs = array_keys($array, max($array))
注意:
通过这种方式,您可以检索与给定最大值相关的每个键


如果您只对其中一个键感兴趣,只需使用$maxs[0]

类似的方法即可

function array_max_key($array) {
  $max_key = -1;
  $max_val = -1;

  foreach ($array as $key => $value) {
    if ($value > $max_val) {
      $max_key = $key;
      $max_val = $value;
    }
  }

  return $max_key;
}

array\u search()返回值:

如果在数组中找到针,则返回针的键,否则返回FALSE

如果在干草堆中多次找到针,则返回第一个匹配的键。若要返回所有匹配值的键,请将array_keys()与可选的search_value参数一起使用

函数取自


就像一个魔咒一样工作

我的解决方案是获得更高的关键点,如下所示:

max(array_keys($values['Users']));

我知道已经有答案了,但我发现这里有一个更优雅的解决方案:

arsort($array);
reset($array);
echo key($array);

其他答案的代码可能较短,但此答案应该是最有效且易于理解的

/**
 * Get key of the max value
 *
 * @var array $array
 * @return mixed
*/
function array_key_max_value($array)
{
    $max = null;
    $result = null;
    foreach ($array as $key => $value) {
        if ($max === null || $value > $max) {
            $result = $key;
            $max = $value;
        }
    }

    return $result;
}

最好使用第一项的键和值作为默认值。更不用说性能了。在处理数组时,每次检查最大值比“糟糕的做法”更糟糕。我提到它不是我的实现。这是一个快速而肮脏的复制/粘贴,OP显然自己做不到,先生。我不会说谎,你让我笑了一下。您关心数组中每次迭代的max()?这“比坏习惯更糟糕”。不,我不相信。这不是最优雅的,但它可以工作。如何查看两个值是否相同?如果有,您可以检查结果是否有两个或多个值duplicates@AlphaMale我想你的意思是两个键,因为最大值定义为一@JustinE如果你不想要重复的键,只需搜索最大值(即避免
array\u keys
),你只会得到一个对应于最大值的键。这已经有一段时间了,但你的数组似乎已经排序(降序);要么这是一个坏例子,要么你真的需要
reset($arr);回声键($arr):)顺便说一句,
重置
是不必要的。
max(array_keys($values['Users']));
arsort($array);
reset($array);
echo key($array);
/**
 * Get key of the max value
 *
 * @var array $array
 * @return mixed
*/
function array_key_max_value($array)
{
    $max = null;
    $result = null;
    foreach ($array as $key => $value) {
        if ($max === null || $value > $max) {
            $result = $key;
            $max = $value;
        }
    }

    return $result;
}