重複の可能性:
配列内の最大値のインデックスを返します
最大値のすべてのインデックスを返すにはどうすればよいですか。たとえば、学生の成績を含むこの配列があります。
$grade = array(
"anna" => "5",
"lala"=>"7",
"eni"=>"7",
この場合、最高成績の生徒の名前を返したいのですが、次のように印刷する必要があります:lala eni
重複の可能性:
配列内の最大値のインデックスを返します
最大値のすべてのインデックスを返すにはどうすればよいですか。たとえば、学生の成績を含むこの配列があります。
$grade = array(
"anna" => "5",
"lala"=>"7",
"eni"=>"7",
この場合、最高成績の生徒の名前を返したいのですが、次のように印刷する必要があります:lala eni
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);
それは学校の演習のように見えます...OK、次のように書くことができます:
$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);
うまくいくかどうか教えてください!
<?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++;
}
}
?>
疑問を解消するために、配列にもう 1 つの要素を追加しました。
あなたはsthを行うことができます。このような:
$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]);