返回数组中最高值的索引

Jef*_*eff 83 php arrays

从类似于以下内容的数组中,如何获得数组中最高值的索引.对于下面的数组,期望的结果将是"11".

Array (
    [11] => 14
    [10] => 9
    [12] => 7
    [13] => 7
    [14] => 4
    [15] => 6
)
Run Code Online (Sandbox Code Playgroud)

drA*_*erT 196

我的解决方案是:

$maxs = array_keys($array, max($array))
Run Code Online (Sandbox Code Playgroud)

注意:
这样您就可以检索与给定最大值相关的每个键.

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

  • 完善.谢谢! (5认同)

And*_*ovs 33

<?php

$array = array(11 => 14,
               10 => 9,
               12 => 7,
               13 => 7,
               14 => 4,
               15 => 6);

echo array_search(max($array), $array);

?>
Run Code Online (Sandbox Code Playgroud)

array_search()返回值:

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

如果在haystack中多次找到needle,则返回第一个匹配的键.要返回所有匹配值的键,请使用带有可选search_value参数的array_keys().


Dav*_*ong 7

我知道它已经回答了,但这里有一个我觉得更优雅的解决方案:

arsort($array);
reset($array);
echo key($array);
Run Code Online (Sandbox Code Playgroud)

瞧!

  • 顺便说一句,不需要“重置”。 (2认同)

luc*_*nov 5

其他答案可能有更短的代码,但这应该是最有效的并且易于理解。

/**
 * 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;
}
Run Code Online (Sandbox Code Playgroud)