1, "dogs" => 2, "fish" => 3);Как мне найти ключ с наименьшим значением? Здесь я бы искал cats.Есть ли какая-то встроенная функция PHP, котору" />

Нахождение ключа минимального значения в ассоциативном массиве

php associative-array

44106 просмотра

5 ответа

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

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

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

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

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

Выше я бы не возражал, если бы он просто выводил тоже; catsили dogs.

Заранее спасибо.

Автор: Philip Morton Источник Размещён: 12.11.2019 09:46

Ответы (5)


92 плюса

Решение

array_keys твой друг:

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

PS : где-то на SO есть дуплекс ( maxвместо него min, но я его отчетливо помню).

Автор: SilentGhost Размещён: 19.10.2009 12:22

10 плюса

Вот как я это сделал.

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

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

Надеюсь, это поможет

Автор: lexx Размещён: 29.05.2012 01:01

2 плюса

Могу попробовать посмотреть на них:

Автор: Phill Pafford Размещён: 19.10.2009 12:25

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);

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

Автор: Jeff Ober Размещён: 19.10.2009 12:20

-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

Автор: Rohit Suthar Mumbai Размещён: 21.12.2011 12:42
Вопросы из категории :
32x32