【发布时间】:2009-11-01 23:52:03
【问题描述】:
switch ($foo)
{
case 3 || 5:
bar();
break;
case 2:
apple();
break;
}
在上面的代码中,第一个 switch 语句是否有效?如果$foo 的值是3 或5,我希望它调用函数bar()
【问题讨论】:
-
我对 PHP 了解不多,但我认为 (3 || 5) 会转换为 TRUE。
-
3 || 5似乎在 switch 语句中仅被评估为true,因此对于$foo的任何值总是会调用bar()。 -
@Mark Rushakoff - 不,在 switch 值和 case 值之间进行了松散的比较,例如,如果 $foo == 0 那么 3 || 5 case代码不会被执行。 (就像 if (0 == (3 || 5)) 会解析为 false。)
-
@GZipp:哎呀,你是对的。当我尝试运行代码时,我没有注意到这一点。
标签: php switch-statement fall-through