PHP - Switch case评估为true,而if ifnt中的语句相同

Dan*_*sen 1 php if-statement switch-statement

我不太明白这一点.看看以下内容:

$value = 0;
if($value >= 90) {
    // this does not return true
}
switch($value) {        
    case $value >= 90:              
        // this however does
    break;  
}
Run Code Online (Sandbox Code Playgroud)

我错过了很明显的东西吗?

u_m*_*der 5

$value >= 90 评估为 false

如果$value是0,则考虑false.这就是你case工作的原因.

以简单的方式,它可以重写为:

switch($value) {        
    case false:              
        // this works
    break;  
}
Run Code Online (Sandbox Code Playgroud)

  • 本手册描述了这个非常好:[*"只有当找到一个case语句,其表达式的值与switch表达式的值匹配时,PHP才会开始执行语句."*](http://php.net /manual/en/control-structures.switch.php).另外要注意的是,开关进行了松散的比较. (2认同)