Max值在Array PHP中的位置

时间:2011-05-07 12:29:12

标签: php arrays

嘿伙计们, 所以我有两个数组

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

我试图在年龄中找到最大值/最大值,获取元素位置并使用所述位置获取相应的名称。我怎么做到这一点?

有没有更好的方法来实现相应的名称,也许捆绑在一起?

由于

3 个答案:

答案 0 :(得分:3)

这应该是你的关键:

$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 />';
}

答案 1 :(得分:1)

只是为了好玩,这是另一个解决方案:

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

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

See it in action

注意:如果许多人具有相同的年龄,则会选择输入数组中最后出现的那个。这是array_combine

行为的结果

答案 2 :(得分:0)

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