0

次のようなcaseステートメントでORを評価する方法があるかどうか疑問に思いました。

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

試しました|| 少し前に、それは私にとってはうまくいかなかったようで、グーグルは役に立たなかった。
ケース内のまたは演算子が非常に役立つ状況がいくつかあったので、私はこれについて疑問に思っています...
どんな助けもいただければ幸いです。

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 に答える