2016-07-06 2 views
-2

お手数ですが、Forループ付きフォールスルースイッチケースPHP

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に翻訳したものです。

次のコードの出力:私の質問はどのようにその場合0が3つの出力の場合に来るが、それは任意の次のコードとケースを持っていないにもかかわらず、「私は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 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文を持つものですか?私は混乱している、誰かが私にこれを説明することができます。前もって感謝します。

+1

"fall through"は、case文の後に 'break;'がなければ、次の文に分岐します。 – iainn

+1

あなたのタイトルはあなたがすでに答えを知っていることを示しているようです。さらに、これは[マニュアル](http://php.net/manual/en/control-structures.switch.php)に詳しく載っていますが、これはあなたがこれを研究した最初の場所でした。 –

+0

しかし、エコーステートメントを持たないにもかかわらず、ケース0からケース3の出力iは5より小さい。私は、ケースにブレイクステートメントがない場合、ブレイクステートメントが発生するまで、ブレイクステートメントを次のステートに移動し続けるということについて、私の研究を行いました。私はケース4に出会ったときにそれを出力するべきだと思う –

答えて

1

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

参考のため、PHP manualをご覧ください。

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>"); 

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

関連する問題