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

#php #arrays

#php #массивы

Вопрос:

Эй, ребята, итак, у меня есть два массива

 $names = array('jimmy', 'johnny', 'sarah');
$ages= array('16', '18', '12');
  

Я пытаюсь найти наибольшее значение в возрастах, получить позицию этого элемента и использовать указанную позицию для получения соответствующего имени. Как бы мне этого добиться?

Есть ли лучший способ получить соответствующее имя, возможно, объединив все в одно?

Спасибо

Ответ №1:

Это должно дать вам ключ:

 $names = array('jimmy', 'johnny', 'sarah');
$ages= array('16', '18', '12');

$oldest = array_search(max($ages), $ages);

echo $names[$oldest];
  

Однако следует отметить, что если два человека будут иметь одинаковый возраст, то возвращенным будет первый из этих двух человек.

если вам нужно найти все самые старые, вам следует использовать array_keys() вместо array_search() вот так:

 $names = array('jimmy', 'johnny', 'sarah', 'kristine');
$ages = array('16', '18', '12', '18');

$oldestPersons = array_keys($ages, max($ages));

foreach($oldestPersons as $key) {
    echo $names[$key].'<br />';
}
  

Ответ №2:

 $oldest_key = 0;
$age_var = 0;
foreach ($ages as $key => $age) {
    if ($age > $age_var) {
        $age_var = $age;
        $oldest_key = $key;
    }
}

echo "Oldest person is: {$names[$oldest_key]} ($age_var)";
  

Ответ №3:

Просто для удовольствия, вот другое решение:

 $names = array('jimmy', 'johnny', 'sarah');
$ages= array('16', '18', '12');

$people = array_combine($ages, $names);
ksort($people);
echo 'Oldest person is: '.end($people);
  

Посмотрите это в действии.

Примечание: Если у многих людей одинаковый возраст, выбирается тот, который появляется последним во входных массивах. Это результат поведения array_combine .