我有一个 switch 语句来根据学生获得的分数显示成绩。
分数 >= 80 的学生获得 A
分数>=70的同学得B
分数 >= 50 的学生获得 C
分数 >= 30 的学生获得 D
分数 >= 0 的学生获得 E
问题是当点为 0 时,它返回 A 而不是 E。这是 switch
语句。
$point = 0;
switch ($point) {
case $point >= 80:
echo 'A';
break;
case $point >= 70:
echo 'B';
break;
case $point >= 50:
return 'C';
break;
case $point >= 30:
echo 'D';
break;
case $point >= 0:
echo 'E';
break;
default:
echo 'F';
break;
}
最佳答案
您尝试将 $point
与 bool 值进行比较(例如 $point >= 80
)。它匹配第一种情况,因为 $point = 0
为 false 而 $point >= 80
也为 false,所以它匹配第一种情况并回显 A
。如果您想对案例进行比较,则必须使用以下代码:
$point = 0;
switch (true) {
case $point >= 80:
echo 'A';
break;
case $point >= 70:
echo 'B';
break;
case $point >= 50:
echo 'C';
break;
case $point >= 30:
echo 'D';
break;
case $point >= 0:
echo 'E';
break;
default:
echo 'F';
break;
}
使用 if
和 elseif
代替 switch
的另一种解决方案:
$point = 0;
if ($point >= 80) {
echo 'A';
} elseif ($point >= 70) {
echo 'B';
} elseif ($point >= 50) {
echo 'C';
} elseif ($point >= 30) {
echo 'D';
} elseif ($point >= 0) {
echo 'E';
} else {
echo 'F';
}
关于php - 开关返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46925362/