当使用假值时,PHP switch语句会产生错误的结果

时间:2016-11-11 20:42:51

标签: php

我注意到当使用具有假值的变量时,switch语句会产生错误的结果。

例如:

Math.abs

使用此脚本回显的字符串是"大于或等于1"。

你能否告诉我是否需要做一些不同的事情来使switch语句与falsy值一起工作?如果你喜欢这样的话,链接也会非常有用,任何形式的帮助都会受到欢迎。

感谢您的时间。

2 个答案:

答案 0 :(得分:1)

switch中传递的值与每个案例的值进行比较。在以下情况下:

$total >= 10

首先进行评估,然后与$total进行比较。 $total >= 10

  

布尔(假)

进行宽松比较(switch使用)0false匹配。

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方式。