PHPでウェブの世界と繋がろう!
menu
ホーム > PHPの文法 > 6 制御文 > PHP continue 文

PHP continue 文

Pocket

- 1 分ノート ! -

  • continue文ループ処理中に以降の文を飛ばして条件式の評価を経てループ処理の最初に戻る
    continue;
    
  • continue文引数でループ構造を抜けるレベルを指定できる
    continue 2;
    
  • continue文switch文ループ構造と判断する


continue文とは

POINT

  • continue文ループ処理中に以降の文を飛ばして条件式の評価を経てループ処理の最初に戻る
    continue;
    
  • continue文引数でループ構造を抜けるレベルを指定できる
    continue 2;
    
  • continue文switch文ループ構造と判断する

continue文は、ループ(反復)処理中 continue; が実行された以降の 文 を飛ばして、条件式の評価を経て、繰り返しの最初に戻るための制御文です。PHPでループ(反復)処理を行う制御文は、for文、while文、do~while文、foreach文です。また、continue文はswitch文をループ構造と判断します。

以下の例では、 「if($i === 5)」 の場合に 「continue;」 が実行され、それ以降の文である、「echo "$i<br/>\n";」が実行されずに飛ばされています。そのため、本来は、数値の 1 から 10 までをechoで出力するループ処理ですが、5 のみ出力されません。

結果は

1
2
3
4
6
7
8
9
10

となります。

continue文は、オプションで引数を指定することができ、ループ構造を抜けるレベルの数を指定できます。for文やwhile文等でそれらが入れ子(ネスト)になっている場合は、ループ構造が階層化されているので、何階層のループ構造を抜けるかレベルを指定できます。何も指定しない状態は「continue 1;」と同意です。これは、現在のループ(反復)処理の最後まで飛ばします。

以下の例では、for文によるループ処理を記述していますが、for文の中にfor文を記述した入れ子(ネスト)構造になっています。出力内容は10の位から90の位までの数値を並べて表示するものですが、50の位だけ表示されません。これは、「if($i === 50)」の場合に、「continue 2;」 が実行され、ループ構造を2つ抜けているためです。そのため、現在のループの最初である、「for($ii = 0; $ii <= 9; $ii++)」の更に上の階層である、「for($i = 10; $i <= 90; $i+=10)」まで戻ります。また、「continue 2;」 以降の文である「echo $i+$ii.' ';」や「echo ")
\n";」などは、実行されません。

結果は

10の位 ( 10 11 12 13 14 15 16 17 18 19 )
20の位 ( 20 21 22 23 24 25 26 27 28 29 )
30の位 ( 30 31 32 33 34 35 36 37 38 39 )
40の位 ( 40 41 42 43 44 45 46 47 48 49 )
50の位 ( )
60の位 ( 60 61 62 63 64 65 66 67 68 69 )
70の位 ( 70 71 72 73 74 75 76 77 78 79 )
80の位 ( 80 81 82 83 84 85 86 87 88 89 )
90の位 ( 90 91 92 93 94 95 96 97 98 99 )

となります。

文とはコードの記述単位の1つで、PHPの場合は「;(セミコロン)」で区切られるまでのコードのことです。

※バージョン:5.4.0 から continue 0; が使えなくなりました。今までのバージョンでは、これは continue 1; と同じ意味に解釈されていました。
※バージョン:5.4.0 から 数値引数の部分に変数を渡すこと (例: $num = 2; continue $num;) ができなくなりました。


使用例

 

for文でcontinue文

結果は

1
2
3
4
6
7
8
9
10

となります。

while文でcontinue文

結果は

1
2
3
4
6
7
8
9
10

となります。

do~while文でcontinue文

結果は

1
2
3
4
6
7
8
9
10

となります。

foreach文でcontinue文

結果は

1
2
3
4
6
7
8
9
10

となります。

while文入れ子(ネスト)でcontinue文

結果は

1-外
1-中
1-内
2-外
2-中
2-内
3-外
3-中
3-内
4-外
4-中
4-内
5-外
5-中
5-内

となります。

for文入れ子(ネスト)でcontinue文

結果は

10の位 ( 10 11 12 13 14 15 16 17 18 19 )
20の位 ( 20 21 22 23 24 25 26 27 28 29 )
30の位 ( 30 31 32 33 34 35 36 37 38 39 )
40の位 ( 40 41 42 43 44 45 46 47 48 49 )
50の位 ( )
60の位 ( 60 61 62 63 64 65 66 67 68 69 )
70の位 ( 70 71 72 73 74 75 76 77 78 79 )
80の位 ( 80 81 82 83 84 85 86 87 88 89 )
90の位 ( 90 91 92 93 94 95 96 97 98 99 )

となります。


サンプルコード

– サンプル Click Here ! –

実行結果
for文でcontinue文
1
2
3
4
6
7
8
9
10

while文でcontinue文
1
2
3
4
6
7
8
9
10

do~while文でcontinue文
1
2
3
4
6
7
8
9
10

foreach文でcontinue文
1
2
3
4
6
7
8
9
10

for文入れ子(ネスト)でcontinue文 レベル指定 2階層
10の位 ( 10 11 12 13 14 15 16 17 18 19 )
20の位 ( 20 21 22 23 24 25 26 27 28 29 )
30の位 ( 30 31 32 33 34 35 36 37 38 39 )
40の位 ( 40 41 42 43 44 45 46 47 48 49 )
50の位 ( )
60の位 ( 60 61 62 63 64 65 66 67 68 69 )
70の位 ( 70 71 72 73 74 75 76 77 78 79 )
80の位 ( 80 81 82 83 84 85 86 87 88 89 )
90の位 ( 90 91 92 93 94 95 96 97 98 99 )

while文入れ子(ネスト)でcontinue文 レベル指定 3階層
1-外
1-中
1-内
2-外
2-中
2-内
3-外
3-中
3-内
4-外
4-中
4-内
5-外
5-中
5-内

– サンプル Click Here ! –


タグ(=記事関連ワード)

日付

投稿日:2011年11月6日
最終更新日:2017年03月24日

関連記事

配列関数サンプル

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

http://www.tryphp.net/phpref-structures_continue/trackback/