Finding the minimum value's key in an associative array

霸气de小男生 提交于 2019-11-26 17:44:38

问题


In PHP, say that you have an associative array like this:

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

How would I find the key with the lowest value? Here, I'd be looking for cats.

Is there some built in PHP function that I've missed which does this? It would also be great if there was a solution that accounted for several values being identical, as below:

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

Above, I wouldn't mind if it just output either; cats or dogs.

Thanks in advance.


回答1:


array_keys is your friend:

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

P.S.: there is a dup here somewhere on SO (it had max instead of min, but I can distinctly remember it).




回答2:


Thats how i did it.

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

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

I hope that helps




回答3:


Might try looking into these:

  • natcasesort(array)
  • natsort(array)



回答4:


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

You can also flip the array and sort it by key:

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

Then the first key is the minimum, and its value is the key in the original array.




回答5:


find the highest value

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

returns --> 120

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

returns --> 155

find the lowest value

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

returns --> 7

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

returns --> 5



来源:https://stackoverflow.com/questions/1588353/finding-the-minimum-values-key-in-an-associative-array

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!