Подтвердить что ты не робот

Поиск ключа минимального значения в ассоциативном массиве

В PHP скажите, что у вас есть ассоциативный массив, подобный этому:

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

Как мне найти ключ с самым низким значением? Здесь я бы искал cats.

Есть ли встроенная функция PHP, которую я пропустил, что это делает? Было бы замечательно, если бы было решение, в котором было указано несколько значений, как показано ниже:

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

Выше, я бы не прочь, если бы он только вывел; cats или dogs.

Спасибо заранее.

4b9b3361

Ответ 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);

Тогда первый ключ является минимальным, а его значение является ключом в исходном массиве.

Ответ 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