-2

助けてください。

for($i=0; $i<12; $i++ ){
        switch($i) {
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
                echo ("i is less than 5 <br>");
                break;
            case 5:
            case 6:
            case 7:
            case 8:
            case 9:
                echo ("i is less than 10 <br>");
                break;
            default:
                echo ("i is 10 or more <br>");
        }
    }

これは私が Java の本で入手したサンプル コードで、上記のコードを PHP に翻訳しました。

次のコードの出力:

i is less than 5 
i is less than 5 
i is less than 5 
i is less than 5 
i is less than 5 
i is less than 10 
i is less than 10 
i is less than 10 
i is less than 10 
i is less than 10 
i is 10 or more 
i is 10 or more

私の質問は、次のコードがなく、ケース 4 に echo ステートメントがある場合でも、ケース 0 からケース 3 が「i は 5 未満」を出力するのはなぜですか? 私は混乱しています、誰かが私にこれを説明できますか。前もって感謝します。

4

2 に答える 2

1

このようなスイッチを想像してみてください

switch($i) {
            case 0:
               case 1:
                   case 2:
                       case 3:
                          case 4:
                             echo ("i is less than 5 <br>");
                             break;
            case 5:
               case 6:
                 case 7:
                    case 8:
                       case 9:
                         echo ("i is less than 10 <br>");
                         break;
            default:
                echo ("i is 10 or more <br>");

break が呼び出されるまで、チェーンに沿って進み続けます。

于 2016-07-06T12:12:00.600 に答える
1

それswitchが動作するはずの方法です。次のケースに陥るのを止めるには、breakキーワードを使用する必要があります。JavaScript、PHP、Python など、私が知っているすべての言語で同じです。

参考までに、PHP のマニュアルを参照してください。

于 2016-07-06T11:49:26.260 に答える