for文の中でbreakを使ってきましたが、この章ではwhile文の中でのbreakの使い方について説明します。
breakの使い方はfor文と同じです。
では例をみてみましょう。 上の例はwhile文の中にif文が入っている構造です。
タグ: break
forとifとbreakを組み合わせて使おう
この章ではfor文の中でのbreakの使い方について説明します。
switch文の中でbreakを使用しましたが、これは一連の流れを強制的に中止したい時やブロックを抜けたい時に使いました。
このbreakはfor文の中でも使用することが出来ますので、例を見てみましょう。 例のようにfor文にif文を入れることもできます。
このif文の意味はbreakを使用しているので「もし、iが4になったらfor文を抜けますよ」と言う意味です。
ですので、「4つのリンゴ」「5つのリンゴ」を出力することなくループを終了します。
breakはこのように一連の流れ(ループ)を強制的に中止したい時に使用します。
次の例はforの入れ子の中でbreakを使用しています。 この例では上から2つ目のforの中でbreakを使っていますが、forの中でbreakを使った場合、breakで抜けることができるのはbreakのあるfor文(例の場合は上から2つ目)だけです。
つまり例の場合は上から2つ目のfor文の中のif文の条件部分が3を超えたら、(上から2つ目の)for文をbreakするのですが、breakした後はまた一番前のに戻ってループを繰り返します。
次の例をみてみましょう。 先ほどの例のように入れ子の中のfor文でbreakを使用した場合、抜けることが出来るのは内側のfor文だけですが、一気に外側のブロック(一番前のfor)を抜けたい場合の方法について説明します。
ある条件になったら繰り返しを止めたいと思う箇所にと記述してください。
次に抜けたい箇所にと言う形式で記述すると、そこまで実行位置を移すことができます。ラベル名は変数名と同じ規則で自由に付けることが出来ます。
この例では の箇所で「i*j」の結果が3より大きければが実行されて、のある場所まで実行位置を移すので二重ループそのものを抜けます。 for文以外でもgotoは使うことができます。
以下の例ではif文の中でgotoを使用しています。
switch文を知ろう
この章ではswitch文について説明します。
if文と同じく条件分岐できるのがswitch文です。
switchのカッコ()の中の式が、caseの値と一致するとbreakまでの文が実行されます。
次にbreakの意味について説明します。
breakはブロックを抜けるために存在します。
switch文の場合はbreakでswitchのブロックを抜けることができます。
つまり、式の値がcaseのいずれかの値と一致すれば文を実行して、breakにより抜けます。
ではswitch文の例を見てみましょう
例えば3を入力すると以下のようになります。
先ほどのswitch文と同じことをif文で表すと以下のようになります。
次は仮にbreakが記述されていなかったらどうなるか説明します。 caseの値に一致した場合、それ以降の処理をbreakの箇所まで実行していきますが、 caseの値に一致したのにも関わらずbreakが無いと次のbreakまで もしくはbreakがどこにもなければdefaultの箇所まで処理が実行されます。
仮に上の例で入力したaの値が0だとすると、0はの値と一致するのでを実行して処理が終わるはずのところ、breakが無いがために、そこで止まらず抜けて行ってしまいます。
さらに「case 1:」にもbreakが無いので、そこの処理も実行されて、結局は最後のdefaultまで実行されてしまいます。
次の例を見てみましょう。
今までのcase文は1つずつでしたが、上の例のようにcase文を複数まとめて設置することができます。
switchの条件文が複数のcaseの中でどれか1つのcaseの値と合致した場合は、そこの処理文を実行してbreakで抜けます。
whileとifとbreakを組み合わせて使おう
この例ではwhileとifとbreakを組み合わせて使う方法について説明します。
これまではfor文の中でbreakを使っていましたが、ここではwhile文の中でbreakを使います。
では例をみてみましょう。 この例はwhile文の中にif文が入っている構造です。
①$iに1を代入します。
②($i <= 10)の条件を判定します。
$iは1でTRUEなので、whileの処理文を実行します。
③$iは1なので、if文の条件部分にはマッチしないので、そのままif文はスルーします。
④を実行してを出力します。
⑤$i++で1を足して、2になります。
⑥($i <= 10)の条件を判定します。
$iは2でTRUEなので、whileの処理文を実行します。
⑦$iは2なので、if文の条件部分にはマッチしないので、そのままif文はスルーします。
⑧を実行してを出力します。
⑨$i++で1を足して、3になります。
⑩($i <= 10)の条件を判定します。
$iは3でTRUEなので、whileの処理文を実行します。
⑪3回目のループで初めて、if文の条件式にマッチしてを実行します。
そして、breakがあるのでここでwhile文を抜けます。
結果は以下の通りです。
ループ1回
ループ2回
3回目で抜ける
forとifとbreakを組み合わせて使おう
この例ではfor文とif文とbreak文を組み合わせて使う方法について説明します。
breakは、現在実行中の for, foreach, while, do-while, switchの実行を強制終了する機能を持っています。
switch の章でbreakを使用したのを覚えているでしょうか?breakは for文でも使うことが出来るのです。
では例をみてみましょう。 for文のブロックの中にif文が入っています。
このif文の意味はもし、$iが4になったらfor文を抜けますよと言う意味です。
breakはこのように一連の流れを強制的に中止してブロックを抜けるために使われます。
$iが4になったらfor文を抜けると言うことはは出力されないということです。
結果は以下の通りです。 次の例をみてみましょう。
for文の入れ子の中でbreakを使うとどうなるのかを説明します。 この例の中のforの中でbreakを使っていますが、このbreakで抜けることができるのは内側のfor文、つまり上から2つ目のforだけです。
内側のfor文の条件部分が5を超えたら、上から2つ目のforをbreakするのですが、breakした後はまた先頭のに戻って続きを繰り返します。 になりますが、
「2掛ける3=6」
「3掛ける2=6」
「3掛ける3=9」
「4掛ける2=8」
「4掛ける3=12」
が出力されていません。
理由はif文の中のbreakで内側のfor文を抜けているために、その下のprint文が出力されていないからです。
次の例をみてみましょう。
外側のfor文も含めてすべてのfor文を抜けたい場合どうしたらいいのかを説明します。 2つfor文がありますが、すべてのfor文を抜けたい場合には内側のfor文の中にと入力します。
これにより、すべてのfor文を抜けることが出来ます。
break の横の数字には入れ子になったforの構造で抜けたい階層の数を指定します。
例えばこの例のように2つのfor文を抜けたい場合には2を指定します。
「break 3; 」と書けばforの3重構造を抜けることが出来ます。
結果は以下の通りです。
1掛ける1=1
1掛ける2=2
1掛ける3=3
2掛ける1=2
2掛ける2=4