

continue文とbreak文がなかなか理解できない・・・
こんな方向けに記事を作成しました。
phpでプログラミングしているとcontinue文とbreak文はよく見かけるかと思います。
しかし、その違いなどが最初は理解しにくいかと思います。
こちらではcontinue文とbreak文の使い方を例を挙げながら紹介していきます。
本記事の内容
・continue文とbreak文とは
・continue文とbreak文の使い方と違い
それでは始めます。
continue文とbreak文とは
そもそもcontinue文とbreak文とはどんなものでしょうか?
テキストで定義をすると、
両方とも、for, foreach, whileなどの処理で利用されるもの。
使い方
continue文:ループ処理をスキップする
break文:ループから抜け出す
ということになります。
ただ、テキストだと難しいと思うので、以下では例を使い方と違いをご説明します。
continue文とbreak文の使い方と違いを例題4つで理解する
ここからはcontinue文とbreak文を使い方を説明しながら違いについて説明していきます。
break文はループを抜け出す
break文はfor, foreach, whileなどの繰り返し処理でループを抜け出したい場合に利用をします。
ループ処理を抜け出したい部分にbreakを置くことで可能です。
それでは以下の場合はどのようになるでしょうか?
1 2 3 4 5 6 7 8 9 | <?php for ($a = 0; $a < 10; $a++) { if ( $a == 5 ){ echo $a . "回目:ループから抜けます\n"; break; } echo $a . "回目\n"; } ?> |
こちらでは5の時にループ処理から抜け出します。
実行すると以下のようになります。
1 2 3 4 5 6 | 0回目 1回目 2回目 3回目 4回目 5回目:ループから抜けます |
このようにif内の$a == 5の場合に(もしaが5だった場合に)breakさせると処理しているので、実行内容が6回目以降が処理されていないことがわかるかと思います。
break文でループを抜け出す階層を指定する
上記では階層が1つでしたが、複数の階層の場合でもbreak文で指定することができます。
複数階層のループを抜け出したいときは以下のように記述します。
break 抜け出したい階層;
ちなみに、break;はbreak 1;と同義です。
1 2 3 4 5 6 7 8 9 10 11 | <?php for( $a=0;$a<5;$a++ ){ for( $b=0;$b<5;$b++ ){ if( $a===3 ){ echo "ループを抜ける\n"; break 2; } echo $a . $b . "\n"; } } ?> |
実行するといかのようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 00 01 02 03 04 10 11 12 13 14 20 21 22 23 24 ループを抜ける |
$aが「3」になったら2重ループを抜けていることがわかります。
continue文でループ処理をスキップする
continue文はfor, foreach, whileなどのループ処理をスキップしたい場合に使用します。
ループ処理をスキップしたい部分にcontinueを入れることで可能となります。
それでは以下の場合はどのようになるでしょうか?
1 2 3 4 5 6 7 8 9 | <?php for ($a = 0; $a < 10; $a++) { if ( $a == 5 ) { echo "ループをスキップする\n"; continue; } echo $a . "回目\n"; } ?> |
この場合5の時にループをスキップします。
実行をすると以下のようになります。
1 2 3 4 5 6 7 8 9 10 | 0回目 1回目 2回目 3回目 4回目 ループをスキップする 6回目 7回目 8回目 9回目 |
このようにif内の$a == 5の場合に(もしaが5だった場合に)continueさせると処理しているので5の時にループをスキップしています。
今回はecho で「ループをスキップする」としているのでそのテキストだけが入っているかと思います。
continue文で繰り返し処理をスキップする階層を指定する
こちらもbreak文のように複数階層をスキップすることが可能です。
記述方法は以下です。
continue スキップしたい階層;
ちなみに、continue;はcontinue1;と同義です。
それでは以下の場合はどのようになるでしょうか?
1 2 3 4 5 6 7 8 9 10 11 | <?php for( $a=0;$a<5;$a++ ){ for( $b=0;$b<5;$b++ ){ if( $a===3 ){ echo "ループをスキップする\n"; continue 2; } echo $a . $b . "\n"; } } ?> |
実行してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 00 01 02 03 04 10 11 12 13 14 20 21 22 23 24 ループをスキップする 40 41 42 43 44 |
$aが「3」になったら2重ループをスキップしていることがわかるかと思います。
まとめ
continue文とbreak文についてまとめました。
最初はどっちかわからないかと思いますが、慣れてくるのでそこは問題ないと思います。
また、階層指定に関しても最初は難しいかもしれませんが使っていく内に、理解できてくると思うのでそんなに心配いらないと思います。