2012-12-10 64 views
1

可能重複:
Return index of highest value in an array收益指數關聯數組在PHP

我怎樣才能返回最大值的所有指數..例如有這個包含學​​生成績的數組

$grade = array(      
     "anna" => "5", 
     "lala"=>"7", 
     "eni"=>"7", 

我想返回學生的名字,他最大等級 在這種情況下應該打印:lala eni

+1

[你到目前爲止嘗試過什麼](http://whathaveyoutried.com)? – xbonez

+0

在第一次搜索 - > http://stackoverflow.com/questions/1461348/return-index-of-highest-value-in-an-array – Rikesh

+0

我發現一個完美的答案給你一個相同的問題: http://stackoverflow.com/questions/1461348/return-index-of-highest-value-in-an-array – Ladineko

回答

0

你可以做某事。像這樣:

$inversed = Array();   
$highGrade = 0; 
foreach ($grade AS $student=>$grade){ 
    if (isset($inversed[$grade])) 
    $inversed[$grade][] = $student; 
    else 
    $inversed[$grade] = Array($student); 

    if ($grade > $highGrade) $highGrade = $grade; 
} 


print_r($inversed[$highGrade]); 
2

您可以使用max()來查找最高值,然後對其執行array_keys()。

http://php.net/manual/en/function.max.php http://php.net/manual/en/function.array-keys.php E.g.

$grade = array(      
    "anna" => "5", 
    "lala"=>"7", 
    "eni"=>"7", 

$max = max($grade); // $max == 7 
array_keys($grade, $max); 
+0

太棒了,不知道最大()做了這個開箱。謝謝大家指出到其他答案,但是當我們搜索「最大關聯數組php」時,這在Google的頂部出現。謝謝! –

1

它看起來像一所學校的運動... 好吧,你可以寫這樣的事情:

$maxInd = -1; 
foreach($grade as $name => $ind) { 
    if($ind > $maxInd) { 
     $maxInd = $ind; 
     $maxRes = array(); 
    } 
    if($ind == $maxInd) { 
     $maxRes[] = $name; 
    } 
} 
return "The highest names are " . implode(', ',$maxRes); 

請讓我知道,如果它的工作原理!

0
<?php 
$grade = array( 
    "atest" => 6,      
     "banna" => "5", 
     "lala"=>"7", 
     "eni"=>"7"); 
asort($grade); 
$reverse = array_reverse($grade); 
$prev_val=''; 
$counter = 0; 
foreach($reverse as $key=>$value) 
{ 
if((($counter==1)&&($value==$prev_val))||($counter==0)) 
{ 
echo $key."->".$value."<br/>"; 
$prev_val = $value; 
$counter++; 
} 
} 

?> 

我在數組中添加了一個元素來清除您的疑惑。