#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
.