5
switch ($foo)
    {
        case 3 || 5:
           bar();
        break;

        case 2:
          apple();
        break;
    }

上記のコードで、最初の switch ステートメントは有効ですか? bar()の値が$foo3 または 5の場合に関数を呼び出したい

4

5 に答える 5

24

switch ステートメントのフォールスルーを利用する必要があります。

switch ($foo)
    {
        case 3:
        case 5:
           bar();
        break;

        case 2:
          apple();
        break;
    }

PHPのman ページには、このような例がいくつかあります。

于 2009-11-01T23:54:17.977 に答える
6

必要なものは次のとおりだと思います。

switch ($foo)
{
    case 3:
    case 5:
       bar();
    break;

    case 2:
      apple();
    break;
}

興味深いことに、私は Perl がこの構文を導入している (または、今までに導入しているかもしれない) と聞いたことがあります。

if ($a == 3 || 5)

私はその構文のファンではありません。字句パーサーをかなり書かなければならず、言語は可能な限り明確であるべきだと信じているからです。ifしかし、その後、Perl はこれらの恐ろしい末尾側の s とs を使用して、これらの種類の問題をすべて解決しているorので、問題はないと思います :-)

于 2009-11-01T23:54:21.037 に答える
5

代わりに、switchステートメントの主な利点の 1 つを使用してください。

switch($foo) {
    case 3:
    case 5:
        bar();
        break;

    case 2:
        apple();
        break;
}
于 2009-11-01T23:54:20.157 に答える
1

ええ、私はあなたがそこに持っているものと同等だと思います:

    <?php

    $foo = 5000;

    スイッチ( $foo )
    {
      case true :    // Gzipp: 「==」スタイルの比較が行われます
        echo '最初のもの'; // $foo とケースの値の間
        壊す; // 「真実」である $foo の値について
                           // これは常に取得します。

      ケース 2:
        echo '2 つ目';
        壊す;

      デフォルト:
        「どちらでもない」をエコーし​​ます。
        壊す;
    }

    ?>
于 2009-11-01T23:58:41.573 に答える
0

いいえ、もしあなたが書いたなら、あなたはcase 3 || 5:ちょうどcase True:あなたが望んでいたものではありません. ただし、 case ステートメントを互いに直接配置することはできます。

スイッチ ($foo)
    {
        ケース 3:
        ケース 5:
           バー();
        壊す;

        ケース 2:
          りんご();
        壊す;
    }
于 2009-11-01T23:56:14.133 に答える