menu
ホーム > PHPの文法 > 6 制御文 > PHP do ~ while 文
UPDATE:2017年03月23日

PHP do ~ while 文

PHPリファレンス

1 Minute Note

  • do~while文はループ処理を行う
    do
    	文
    while (式)
    
    
    //文が複数の場合「{ }(ブロック)」で括る
    do {
    	文
    	文
    	文
    } while (式)
    
  • do~while文では文が最低1回は実行される
  • do~while文の 式 の評価は各反復処理の最後に行われる
  • do~while文を入れ子にすることが出来る
  • キーワード「break」でループを終了させることが出来る
  • キーワード「continue」で以降の文を実行せず再びdo~while文の 式 の評価へ戻ることが出来る
  • ※文とはコードの記述単位の1つで、PHPの場合は「;(セミコロン)」で区切られるまでのコード


do~while文とは

POINT

  • do~while文はループ処理を行う
    do
    	文
    while (式)
    
    //文が複数の場合「{ }(ブロック)」で括る
    do {
    	文
    	文
    	文
    } while (式)
    
  • do~while文では文が最低1回は実行される
  • do~while文の 式 の評価は各反復処理の最後に行われる

do~while文はループ(反復)処理を表現する制御文です。

do~while文の構文は

do
	文
while (式)


//文が複数の場合「{ }(ブロック)」で括る
do {
	文
	文
	文
} while (式)

です。

do~while文では、最初に文が実行されます。式 の評価はループ(反復)の最後に行われます。従って文の実行が最低1回は保証されます。while文との違いは 式 の評価のタイミングです。while文の 式 の評価は各反復処理の開始時に行われますが、do~while文の 式 の評価は、各反復処理の最後に行われます。

以下の例ではdo~while文の 式 の評価は「FALSE(偽)」ですが、文は最低1回は実行されるので、

結果は

2

となります。

最初に文が実行された後、式 を評価し、結果が「TRUE(真)」の場合に、もう1度文を実行し、 式 の評価を行います。まだ「TRUE(真)」の場合は、文を実行し、再度 式 の評価を行います。式 の評価が「FALSE(偽)」と評価された場合はループ処理は終了し文は実行されません

do~while文の 式 の結果は「真(TURE)」と「偽(FALSE)」の論理型で得る必要があります。ですので、式 には「比較演算子」や「論理演算子」など使用するなどして論理値の「真(TRUE)」「偽(FALSE)」の値を返す式を作ります。論理型についてはこちらを参照下さい。

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

文が複数の場合は「{ }(ブロック)」で括ります。if文などと同じです。


簡単なdo~while文

POINT

  • do~while文では文が最低1回は実行される

以下の例では、do~while文の 式 の結果は「FALSE(偽)」ですが、文が最低1回は実行されるので「$i++」のインクリメントが1回実行されています。

結果は

2

となります。


do~while文の入れ子

POINT

  • do~while文を入れ子にすることが出来る

do~while文では、do~while文の中にdo~while文を記述する入れ子(ネスト)が可能です。

結果は

1(1-1,1-2,1-3,)
2(2-1,2-2,2-3,)
3(3-1,3-2,3-3,)
4(4-1,4-2,4-3,)
5(5-1,5-2,5-3,)
6(6-1,6-2,6-3,)
7(7-1,7-2,7-3,)
8(8-1,8-2,8-3,)
9(9-1,9-2,9-3,)
10(10-1,10-2,10-3,)

となります。


キーワード「break」を使用してdo~while文のループを終了させる

POINT

  • キーワード「break」でループを終了させることが出来る

do~while文ではキーワード「break」を使用してdo~while文のループを終了させることが出来ます。「break」が出てきた時点で、文の実行が終了しループ処理を抜け出します。

以下の例文ではif文でキーワード「break」を配置し、文の実行を終了させループ処理を抜け出しています。

結果は

1
2
3
4

となります。


キーワード「break」のオプションを使用

キーワード「break」はループを終了させる機能がありますが、do~while文が入れ子(ネスト)構造であった場合に、何段階のループを抜けるかを数字で指定することが出来ます。これは、キーワード「break」のオプション機能です。

結果は

$iは1
$jは5

となります。

例文では「break 2;」と指定して、ループ構造を2段階抜けています。$jが5まで加算された時点で「break」が実行され、ループ処理を2段階抜けるので、すべてのループから抜けることになります。従って$iは加算されずにループ処理を終了しています。


キーワード「continue」で 式 の評価に進む

POINT

  • キーワード「continue」で以降の文を実行せず再びdo~while文の 式 の評価へ進むことが出来る

キーワード「continue」を使用して以降の文を実行せずdo~while文の 式 の評価へ進むことが出来ます。通常 do~while文の 文 の実行が最後まで終了してから、do~while文の 式 の評価へ移りますが、キーワード「continue」が出てきた時点で以降の文を実行せずに、式 の評価へ進みます。式 の評価後ループを再開します。

結果は

1
2
3
4
5となりました。
6
7
8
9
10

となります。

キーワード「continue」もキーワード「break」ど同様に、オプションで何段階のループを抜けるか数字で指定できます。

以下の例文では、「$i === 5」の場合にif文で「continue 2」を実行し最初のdo~while文の 式 の評価へ進んでいます。

結果は

1(1-1,1-2,1-3,)
2(2-1,2-2,2-3,)
3(3-1,3-2,3-3,)
4(4-1,4-2,4-3,)
5()
6(6-1,6-2,6-3,)
7(7-1,7-2,7-3,)
8(8-1,8-2,8-3,)
9(9-1,9-2,9-3,)
10(10-1,10-2,10-3,)

となります。


サンプルコード

– サンプル Click Here ! –

実行結果
簡単なdo~while文
2

do~while文の入れ子
1(1-1,1-2,1-3,)
2(2-1,2-2,2-3,)
3(3-1,3-2,3-3,)
4(4-1,4-2,4-3,)
5(5-1,5-2,5-3,)
6(6-1,6-2,6-3,)
7(7-1,7-2,7-3,)
8(8-1,8-2,8-3,)
9(9-1,9-2,9-3,)
10(10-1,10-2,10-3,)

キーワード「break」を使用してdo~while文のループを終了させる
1
2
3
4

キーワード「break」のオプションを使用
$iは1
$jは5

キーワード「continue」を使用して以降の文を実行せずwhile(式)の評価に戻る
1
2
3
4
5となりました。
6
7
8
9
10

– サンプル Click Here ! –


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

日付

公開日:2011年11月6日
最終更新日:2017年03月23日

関連記事

配列関数サンプル

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

この記事へのコメント

トラックバックurl

http://wepicks.net/phpref-structures_dowhile/trackback/

page top