2009-10-19 108 views
36

在PHP中發現的最小值的關鍵,說你有一個關聯數組是這樣的:關聯數組

$pets = array(
    "cats" => 1, 
    "dogs" => 2, 
    "fish" => 3 
); 

我怎麼會找到的最低值的關鍵?在這裏,我會尋找cats

是否有一些內置的PHP函數,我錯過了這是什麼?這也將是巨大的,如果有是佔了幾個值是相同的解決方案,如下圖所示:

$pets = array(
    "cats" => 1, 
    "dogs" => 1, 
    "fish" => 2 
); 

以上,我不會介意,如果它只是輸出要麼; catsdogs

在此先感謝。

回答

83

array_keys是你的朋友:

$pets = array(
    "cats" => 1, 
    "dogs" => 2, 
    "fish" => 3 
); 
array_keys($pets, min($pets)); # array('cats') 

附::在這裏有一個dup(它有max而不是min,但我可以清楚地記住它)。

+0

這是一個聰明的=)也許你應該提到它返回一個或多個值的列表(除非該數組是空的)。 – Blixt 2009-10-19 12:25:49

+0

我已經修復了這個評論,我希望它現在可以清楚了。 – SilentGhost 2009-10-19 12:29:27

+0

感謝您的一個很好的答案。 :) – 2009-10-19 12:35:30

2
$min_val = null; 
$min_key = null; 
foreach($pets as $pet => $val) { 
    if ($val < $min_val) { 
    $min_val = $min; 
    $min_key = $key; 
    } 
} 

您還可以翻轉數組,並重點對其進行排序:

$flipped = array_flip($pets); 
ksort($flipped); 

然後第一個關鍵是最小的,並且它的值是原始數組中的關鍵。

+0

你忘了關閉支架。 使用SilentGhost建議的array_keys和min將會更容易和更快速。 – 2009-10-19 12:24:45

+0

謝謝,我固定了支架。 – 2009-10-19 12:28:01

2

可以嘗試尋找到這些:

+4

上面的鏈接是對可怕的w3schools,這裏有正確的PHP手冊鏈接(爲了節省你幾秒鐘): http://php.net/manual/en/function.natcasesort.php http://php.net/manual/en/function.natsort.php – 2014-07-23 08:58:21

-2

找到最高值

print max(120, 7, 8, 50); 

回報 - > 120

$array = array(100, 7, 8, 50, 155, 78); 
print max($array); 

回報 - > 155

找到最低值

print min(120, 7, 8, 50); 

回報 - > 7

$array = array(50, 7, 8, 101, 5, 78); 
print min($array); 

退貨 - > 5

+2

問題是關於尋找關鍵,而不僅僅是val UE。 – marcovtwout 2012-10-12 08:59:50

6

多數民衆贊成我是如何做到的。

$pets = array(
    "cats" => 1, 
    "dogs" => 2, 
    "fish" => 3 
); 

array_search(min($pets), $pets); 

我希望幫助