2009-10-19 106 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); 

我希望帮助