PHP中从数字到字母等级的GPA转换器
我编写了一个PHP代码,将从数据库中检索的GPA作为数字转换为a、B、C等字母。。以此类推,但所有结果都是F,即使GPA等于4.0。 这是我的密码请告诉我有什么问题PHP中从数字到字母等级的GPA转换器,php,Php,我编写了一个PHP代码,将从数据库中检索的GPA作为数字转换为a、B、C等字母。。以此类推,但所有结果都是F,即使GPA等于4.0。 这是我的密码请告诉我有什么问题 while($row = mysqli_fetch_array($show_result)) { //$data holds the array $row['GPA'] = $grad; if ($grad <= 0.9 && $gra
while($row = mysqli_fetch_array($show_result))
{
//$data holds the array
$row['GPA'] = $grad;
if ($grad <= 0.9 && $grad >=0.0)
{
$grad = 'F';
}
else if ($grad<= 1.9 && $grad >=1.0 )
{
$grad = 'D';
}
else if ($grad <= 2.9 && $grad >=2.0)
{
$grad = 'C';
}
else if ($grad <= 3.9 && $grad >=3.0)
{
$grad = 'B';
}
else if ($grad == 4.0)
{
$grad = 'A';
}
echo "<td>" . $grad . "</td>";
while($row=mysqli\u fetch\u数组($show\u result))
{
//$data保存数组
$row['GPA']=$grad;
如果($grad=0.0)
{
$grad='F';
}
否则,如果($grad=1.0)
{
$grad='D';
}
否则,如果($grad=2.0)
{
$grad='C';
}
否则,如果($grad=3.0)
{
$grad='B';
}
否则,如果($grad==4.0)
{
$grad='A';
}
回声“$grad.”;
$row['GPA']=$grad;
应该是$grad=$row['GPA'];
我知道你没有要求代码审查,但我忍不住提出了一些建议:
确定分数的逻辑不必穿插在数据库代码或html生成代码中。此外,如果不将截止值编织到逻辑中,它将更加灵活和可维护。也许可以这样开始:
/**
* Get a letter grade from a numeric GPA and a grading scale
* $scale is an array of letter grades keyed by minimum GPA cutoffs,
* and should be sorted in descending order by key (cutoff)
*/
function get_letter_grade ($numeric_grade, $scale)
{
$letter_grade = 'F';
foreach ($scale as $cutoff => $grade)
{
if ($numeric_grade >= $cutoff)
{
$letter_grade = $grade;
break;
}
}
return $letter_grade;
}
然后您可以像这样测试它(如果不是使用单元测试框架):
$scale=array(
4.0=>“A”,
3.0=>“B”,
2.0=>“C”,
1.0=>“D”,
);
$test=0.0;
虽然($test非常感谢您对代码的检查,先生,这很有趣,我以后可能需要:))但是现在我刚刚解决了我在代码中遇到的问题,再次感谢您的回答
$scale = array (
4.0 => 'A',
3.0 => 'B',
2.0 => 'C',
1.0 => 'D',
);
$test = 0.0;
while ($test <= 4.0)
{
$grade = get_letter_grade ($test, $scale);
echo "letter grade for $test is $grade\n";
$test = round ($test + 0.1, 1); // round to avoid floating point error
}