2011-05-07 107 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行爲的結果。

相關問題