2011-08-15 53 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