在PHP中,假设你有一个像这样的关联数组:
$pets = array(
"cats" => 1,
"dogs" => 2,
"fish" => 3
);
我如何找到价值最低的密钥?在这里,我会寻找cats
。
是否有一些内置的PHP函数我错过了哪个呢?如果有一个解决方案可以解决几个相同的值,那么也会很好,如下所示:
$pets = array(
"cats" => 1,
"dogs" => 1,
"fish" => 2
);
上面,我不介意它是否输出; cats
或dogs
。
提前致谢。
答案 0 :(得分:88)
array_keys
是你的朋友:
$pets = array(
"cats" => 1,
"dogs" => 2,
"fish" => 3
);
array_keys($pets, min($pets)); # array('cats')
P.S。:SO上有一个副本(它有max
而不是min
,但我可以清楚地记住它。)
答案 1 :(得分:8)
多数民众赞成我是如何做到的。
$pets = array(
"cats" => 1,
"dogs" => 2,
"fish" => 3
);
array_search(min($pets), $pets);
我希望有帮助
答案 2 :(得分: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);
然后第一个键是最小值,它的值是原始数组中的键。
答案 3 :(得分:2)
可能会尝试查看这些:
答案 4 :(得分:0)
检索单个字符串的另一种方法是使用desirable sorting method并通过在排序数组上使用key()
直接检索第一个键。在这种情况下,需要具有最低值的键,asort
将从最低值到最高值进行排序并重置内部指针。要检索反向(从最高到最低),请使用arsort
。
$pets = array(
"dogs" => 2,
"cats" => 1,
"fish" => 3
);
asort($pets);
var_dump(key($pets));
//string(4) "cats"
$pets = array(
"dogs" => 1,
"cats" => 1,
"fish" => 3
);
asort($pets);
var_dump(key($pets));
//string(4) "dogs"
请注意,所有PHP数组排序方法都将按引用更改数组。
为防止更改原始数组,请创建该数组的副本或使用Iterator
。
$petsSorted = $pets;
asort($petsSorted);
key($petsSorted);
答案 5 :(得分:-2)
找到最高值
print max(120, 7, 8, 50);
返回 - &gt; 120
$array = array(100, 7, 8, 50, 155, 78);
print max($array);
返回 - &gt; 155
找到最低值
print min(120, 7, 8, 50);
返回 - &gt; 7
$array = array(50, 7, 8, 101, 5, 78);
print min($array);
返回 - &gt; 5