1

可能重复:
返回数组中最大值的索引

我怎样才能返回最大值的所有索引..例如一个包含学生成绩的数组

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

我想返回在这种情况下成绩最高的学生的姓名应该打印:lala eni

4

4 回答 4

2

您可以使用 max() 来找到最大值,然后对其执行 array_keys() 。

http://php.net/manual/en/function.max.php http://php.net/manual/en/function.array-keys.php 例如

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

$max = max($grade); // $max == 7
array_keys($grade, $max); 
于 2012-12-10T13:51:36.267 回答
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);

请让我知道它是否有效!

于 2012-12-10T13:55:35.087 回答
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]);
于 2012-12-10T13:50:49.550 回答
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++;
}
}

?>

我在数组中添加了一个元素以消除您的疑问。

于 2012-12-10T13:58:49.643 回答