2011-05-07 116 views
2

嗨, 所以我有两个数组位置最大值的

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

我试图找到年龄最大/最大值,获得该元素的位置和使用上述位置获得相应的名字。我将如何实现这一目标?

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

感谢

回答

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 />'; 
} 
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)"; 
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行为的结果。

相关问题