[英]Switch return wrong value
我有一個切換聲明,根據學生得到的分數顯示成績。
得分> = 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
與布爾值進行比較(如$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;
}
演示: https : //ideone.com/lyBUmA
使用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';
}
演示: https : //ideone.com/FRlorS
這不起作用,您嘗試使用布爾條件。 使用if else代替它。
是的,顯然這個問題是重復的。 而不是使用
開關($ point)
你應該使用
開關(true)
它工作我檢查
<?php
$point = 0;
switch (true) {
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;
}
有關詳細信息,請查看此問題
您可以使用2次比較,例如:
case $point >= 80:
echo 'A';
break;
case ($point < 80 && $point >= 70):
echo 'B';
break;
等等..
Switch / Case不支持> ...嘗試if / elseif ....
$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';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.