我的php代码中有一个奇怪的案例问题;
$sm_hours = (int)$sm_hours; // Make it an integer
echo $sm_hours; // is 206
switch ($sm_hours) {
case ($sm_hours = 0 && $sm_hours <= 120):
echo "One";
break;
case ($sm_hours >= 121 && $sm_hours <= 240):
echo "Two";
break;
case ($sm_hours >= 241):
echo "Three";
break;
}
$ sm_hours是206,但我得到的回声是One not Two。我错过了什么?
由于
答案 0 :(得分:1)
您将始终跳转到第一个开关案例,因为您将$sm_hours
设置为0.单个=
用于设置变量。
要测试其值,请使用==
执行type juggling,或使用===
来测试该类型。
答案 1 :(得分:1)
case ($sm_hours == 0 && $sm_hours <= 120):
您正在使用相等运算符
答案 2 :(得分:1)
在第一种情况下,试试这个:
case ($sm_hours == 0 && $sm_hours <= 120):
echo "One";
break;
答案 3 :(得分:1)
在你的案例中更好地使用if和elseif语句:
$sm_hours = (int)$sm_hours; // Make it an integer
echo $sm_hours; // is 206
if ($sm_hours >= 0 && $sm_hours <= 120)
echo "One";
elseif ($sm_hours >= 121 && $sm_hours <= 240)
echo "Two";
else
echo "Three";
开关只是尝试匹配精确值。
答案 4 :(得分:0)
尝试
$sm_hours >= 0 && $sm_hours <=120
答案 5 :(得分:0)
好的,所以考虑到$ sm_hours&lt;正如阿南德所指出的那样。此代码适用于我需要的所有选项。
switch ($sm_hours) {
case ($sm_hours >= 121 && $sm_hours <= 240):
echo "Two";
break;
case ($sm_hours >= 241):
echo "Three";
break;
default:
echo "One";
break;
}