0

我想知道是否有办法在 case 语句中评估 OR,例如:

case 0 || 3:
    echo "equal to 0 or 3!";
    break;

我试过|| 不久前,它似乎对我不起作用,谷歌也没有证明有帮助。
我只是想知道这一点,因为在某些情况下,案例中的 or 运算符会非常有用……
感谢您提供任何帮助。

4

2 回答 2

7

你可以让案件通过。

case 0:
case 3:
   echo "equal to 0 or 3!";
   break;

许多风格指南不建议这样做。

于 2012-04-26T03:47:26.437 回答
1

当使用解析为布尔值的逻辑和比较运算符时,您可以在需要第一种情况的情况下使用switch(true)或者实际上,任何“真实”值,由于检查的非严格性switchtrue) 。

switch(true){
    case ($foo >= 0):
        break;
    case ($bar <= 0):
        break;
    case ($baz == 0):
        break;
    case ($foo > $bar && $bar < $baz):
        break;
    default:
        break;
}

但是,有一些语法替代方案可能证明更易读,或提供更多控制。

正如@alex 指出的那样,如果您希望将多个案例解析为同一个代码块,您可以将它们堆叠起来并让它们通过。

于 2012-04-26T04:15:15.597 回答