switch ($foo)
{
case 3 || 5:
bar();
break;
case 2:
apple();
break;
}
在上面的代碼中,第一個switch語句是否有效?我想它調用的函數bar()
如果$foo
的值是3或5是否可以使用||在PHP開關?
switch ($foo)
{
case 3 || 5:
bar();
break;
case 2:
apple();
break;
}
在上面的代碼中,第一個switch語句是否有效?我想它調用的函數bar()
如果$foo
的值是3或5是否可以使用||在PHP開關?
你應該趁秋天通過開關語句:
switch ($foo)
{
case 3:
case 5:
bar();
break;
case 2:
apple();
break;
}
的PHP man page有一些例子就是這樣的。
相反,使用的switch
報表的主要優勢之一:
switch($foo) {
case 3:
case 5:
bar();
break;
case 2:
apple();
break;
}
我想你需要的是:
switch ($foo)
{
case 3:
case 5:
bar();
break;
case 2:
apple();
break;
}
有趣的是,我聽說Perl是(或者甚至到目前爲止)引入了這種語法,沿着以下幾點:
if ($a == 3 || 5)
我不是big由於我不得不相當多地編寫詞法分析器,並且認爲語言應該儘可能的明確,但隨後,Perl已經解決了所有這些各種各樣的問題與那些可怕的尾側前if
S和or
這麼我懷疑還會有與它沒有任何麻煩:-)
沒有,如果你寫case 3 || 5:
,那麼你不妨寫case True:
,這當然不是你想要的。但是你可以把case語句直接相互下面:
switch ($foo) { case 3: case 5: bar(); break; case 2: apple(); break; }
是啊,我覺得你有什麼有相當於:
<?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; } ?>
我不知道了很多關於PHP,但我會假設(3 || 5)轉換爲TRUE。 – 2009-11-01 23:56:08
'3 || 5'似乎在switch語句中被評估爲「true」,因此將總是爲'$ foo'的任何值調用'bar()'。 – 2009-11-01 23:56:43
@Mark Rushakoff - 不,對開關值和大小寫值進行寬鬆比較,如果例如$ foo == 0,則3 || 5個案例代碼不會被執行。 (就像if(0 ==(3 || 5))會解析爲false) – GZipp 2009-11-02 00:58:27