2011-08-15 24 views
13

我使用max()函数来查找数组中的最大值。我需要一种方法来返回该值的关键。我试着玩array_keys()函数,但我所能做的就是返回数组中最大的键。必须有一种方法来做到这一点,但PHP手册没有提及任何东西。使用max()函数获取数组密钥

下面是我使用的代码示例:

$arrCompare = array('CompareOne' => $intOne, 
        'CompareTwo' => $intTwo, 
        'CompareThree' => $intThree, 
        'CompareFour' => $intfour); 

$returnThis = max($arrCompare); 

我能顺利拿到阵列的最高值,我就不能得到相应的密钥。有任何想法吗?


编辑:只是为了澄清,使用这将无法工作:

$max_key = max(array_keys($array)); 

与此相比钥匙,不做任何处理数组中的值。

+0

这似乎很奇怪的是'array_keys()'不帮你。 – Dor

+0

@Dor:使用'array_keys'比较键值。 –

回答

25

array_search功能会帮助你。

$returnThis = array_search(max($arrCompare),$arrCompare); 
+0

这很好地工作米罗,似乎处理我可以处理的方式相同的两个值。谢谢。 – Cloudkiller

+0

谢谢。我很高兴我的帮助;) – kravemir

4

不是一行代码,但它会执行所需的任务。

function max_key($array) 
{ 
    $max = max($array); 
    foreach ($array as $key => $val) 
    { 
     if ($val == $max) return $key; 
    } 
} 

http://cherryblossomweb.de/2010/09/26/getting-the-key-of-minimum-or-maximum-value-in-an-array-php/

+0

不要在每次循环迭代中重新计算'max($ array)' - 我非常怀疑PHP运行时足够聪明,可以将循环提升出 –

+0

@Adam:哇。谢谢一堆。当我读它时,我不能相信我错过了! –

+0

我创建了一行代码;) – kravemir

6

如果你需要从源阵列最大值所有按键,你可以这样做:

$keys = array_keys($array, max($array)); 
+0

喜欢这个,虽然它可能不像'array_search()'那么明显。我甚至不知道'array_keys'可能会把'$ search_value'作为它的第二个参数! –

+0

这返回了第二个最高密钥。我去了这个答案,并在我的情况下工作:https://stackoverflow.com/questions/6126066/search-for-highest-key-index-in-an-array – Cagy79