switch ($foo)
{
case 3 || 5:
bar();
break;
case 2:
apple();
break;
}
在上面的代码中,第一个switch语句是否有效?如果bar()
的值为3或5,我希望它调用函数$foo
答案 0 :(得分:24)
你应该利用switch语句的优势:
switch ($foo)
{
case 3:
case 5:
bar();
break;
case 2:
apple();
break;
}
PHP man page有一些例子。
答案 1 :(得分:6)
我认为你需要的是:
switch ($foo)
{
case 3:
case 5:
bar();
break;
case 2:
apple();
break;
}
有趣的是,我听说过Perl是(现在甚至可能已经引入)这种语法,这有点像:
if ($a == 3 || 5)
我不是那种语法的大粉丝,因为我不得不写一些词法解析器,并且相信语言应该尽可能明确。但是之后,Perl已经用那些可怕的尾部if
和or
解决了所有这些问题,所以我怀疑它不会有问题: - )
答案 2 :(得分:5)
相反,使用switch
语句的主要优点之一:
switch($foo) {
case 3:
case 5:
bar();
break;
case 2:
apple();
break;
}
答案 3 :(得分:1)
是的,我认为你所拥有的相当于:
<?php $foo = 5000 ; switch( $foo ) { case true : // Gzipp: an '=='-style comparison is made echo 'first one' ; // between $foo and the value in the case break; // so for values of $foo that are "truthy" // you get this one all the time. case 2: echo 'second one'; break; default: echo 'neither' ; break; } ?>
答案 4 :(得分:0)
不,如果你写了case 3 || 5:
,那么你也可以写case True:
,这肯定不是你想要的。但是,您可以将案例陈述直接放在彼此之下:
switch ($foo) { case 3: case 5: bar(); break; case 2: apple(); break; }