Поиск ключа минимального значения в ассоциативном массиве
В PHP скажите, что у вас есть ассоциативный массив, подобный этому:
$pets = array(
"cats" => 1,
"dogs" => 2,
"fish" => 3
);
Как мне найти ключ с самым низким значением? Здесь я бы искал cats
.
Есть ли встроенная функция PHP, которую я пропустил, что это делает? Было бы замечательно, если бы было решение, в котором было указано несколько значений, как показано ниже:
$pets = array(
"cats" => 1,
"dogs" => 1,
"fish" => 2
);
Выше, я бы не прочь, если бы он только вывел; cats
или dogs
.
Спасибо заранее.
Ответы
Ответ 1
array_keys
является вашим другом:
$pets = array(
"cats" => 1,
"dogs" => 2,
"fish" => 3
);
array_keys($pets, min($pets)); # array('cats')
P.S.: там где-то есть SO (он имел max
вместо min
, но я могу отчетливо его запомнить).
Ответ 2
Вот как я это сделал.
$pets = array(
"cats" => 1,
"dogs" => 2,
"fish" => 3
);
array_search(min($pets), $pets);
Я надеюсь, что это поможет
Ответ 3
$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);
Тогда первый ключ является минимальным, а его значение является ключом в исходном массиве.
Ответ 4
Можете попробовать посмотреть на них:
Ответ 5
найти наивысшее значение
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