2012-12-10 30 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++; 
} 
} 

?> 

我在数组中添加了一个元素来清除您的疑惑。