我注意到当使用具有假值的变量时,switch语句会产生错误的结果。
例如:
Math.abs
使用此脚本回显的字符串是"大于或等于1"。
你能否告诉我是否需要做一些不同的事情来使switch语句与falsy值一起工作?如果你喜欢这样的话,链接也会非常有用,任何形式的帮助都会受到欢迎。
感谢您的时间。
答案 0 :(得分:1)
将switch
中传递的值与每个案例的值进行比较。在以下情况下:
$total >= 10
首先进行评估,然后与$total
进行比较。 $total >= 10
是
布尔(假)
进行宽松比较(switch
使用)0
和false
匹配。
var_dump(false == 0);
BOOL(真)
所以输出是:
大于或等于一个
如果没有寻找相同的比较,我会使用if
/ elseif
s,http://php.net/manual/en/control-structures.elseif.php。
答案 1 :(得分:0)
switch
语句在逻辑上等同于一组级联if-else
语句;您对case
上的每个表达式进行比较(使用==
),表达式将放在switch
上。
您的代码与:
相同$total = 0;
if ($total == 5) {
echo "Five";
} elseif ($total == 10) {
echo "Ten";
} elseif ($total == ($total >= 10)) {
echo "More than or equal to one";
} else {
echo "Anything";
}
现在应该很清楚。前两个if
条件评估为FALSE
,但第三个评估为TRUE
和消息"大于或等于一个"打印出来。
详细了解switch
statement以及comparing values的PHP方式。