switch ($foo)
{
case 3 || 5:
bar();
break;
case 2:
apple();
break;
}
在上面的代码中,第一个 switch 语句是否有效?bar()
如果值为$foo
3 或 5 ,我希望它调用该函数
switch ($foo)
{
case 3 || 5:
bar();
break;
case 2:
apple();
break;
}
在上面的代码中,第一个 switch 语句是否有效?bar()
如果值为$foo
3 或 5 ,我希望它调用该函数
您应该利用 switch 语句的失败:
switch ($foo)
{
case 3:
case 5:
bar();
break;
case 2:
apple();
break;
}
PHP 手册页有一些类似的示例。
我认为你需要的是:
switch ($foo)
{
case 3:
case 5:
bar();
break;
case 2:
apple();
break;
}
有趣的是,我听说 Perl 正在(或者现在可能已经)引入了这种语法,大致如下:
if ($a == 3 || 5)
我不是那种语法的忠实拥护者,因为我不得不编写相当多的词法解析器,并且相信语言应该尽可能明确。if
但是,Perl 已经解决了所有这些or
问题
switch
相反,请使用语句的主要优点之一:
switch($foo) {
case 3:
case 5:
bar();
break;
case 2:
apple();
break;
}
是的,我认为你所拥有的相当于:
<?php $foo = 5000 ; 开关($foo) { case true : // Gzipp:进行 '==' 风格的比较 echo '第一个' ; // 在 $foo 和 case 中的值之间 休息; // 所以对于“真实”的 $foo 值 // 你总是得到这个。 案例2: echo '第二个'; 休息; 默认: 回声“都不是”; 休息; } ?>
不,如果你写了case 3 || 5:
,那你还不如直接写case True:
,这肯定不是你想要的。但是,您可以将 case 语句直接放在彼此下方:
开关 ($foo) { 案例3: 案例5: 酒吧(); 休息; 案例2: 苹果(); 休息; }