PHPの繰り返し処理の1つに、do while文があります、do while文は他の繰り返し処理に比べて、使われる機会が少ないのでよく理解していない人も多いかもしれません。
そこで今回は、PHPのdo while文についての解説や使い方について解説していきます。while文との違いや活用方法などについても紹介しているので、ぜひご覧ください。
目次
PHPのdo while文とは
PHPのdo while文は、for文やwhile文、foreach文のように繰り返し処理を実行するときに使います。
do while文とwhile文とほぼ同じ用途で使われます。しかし、この2つは繰り返し条件を判定するタイミングに明確な違いがあります。繰り返し条件の判定が最初に行われるwhile文に対し、do while文は、処理が実行された後に、繰り返し条件の判定が行われます。
do while文の処理は必ず一回は実行される
do while文を使用する際、繰り返し条件の判定は、処理を実行した後に行われます。つまり、do while文に書かれた処理は、必ず一回は実行されるということです。
これが、do while文の最大の特徴です。この特徴を生かした処理を実行したい場合には、繰り返し処理にdo while文を使うと良いでしょう。
PHPでdo while文を使う方法
それでは、実際にPHPプログラミングでdo while文を使う方法を紹介していきます。
まず、do while文を使う際は、次のように記述します。
1 2 3 |
do { 実行する処理; } while(条件式); |
次に、サンプルコードを使って、動作を確認してみましょう。
1 2 3 4 5 6 7 8 9 10 |
<?php $i=0; do { echo $i; $i++; } while ( $i<10 ); ?> |
上記サンプルコードでは、変数iの値が10になるまで値の出力処理を繰り返しています。
参考として、上記コードの条件式を「変数iが10よりも大きい場合」に変更して、出力結果をみてみましょう。
1 2 3 4 5 6 7 8 9 10 |
<?php $i=0; do { echo $i; $i++; } while ( $i>10 ); ?> |
上記の出力結果の通り、コード上で条件式に当てはまるタイミングはありませんでしたが、do while文内に書かれた処理が一度だけ実行されました。
こういった動作は、使い方を間違えると不要な処理を実行することにつながりますので、do while文を使う際には十分注意するようにしましょう。
while文との違い
次に、while文との動作の違いをみていきましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?php echo 'do while文の場合)<br />'; $i=0; do { echo $i; $i++; } while ( $i<10 ); echo '<br /><br />'; echo 'while文の場合)<br />'; $j=0; while ( $j<10 ){ echo $j; $j++; } ; ?> |
0123456789
while文の場合)
0123456789
上記の通り、出力は同じ結果となりました。
次に、条件式を一度も満たさない場合のdo while文とwhile文の動作の違いについて、みてみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?php echo 'do while文の場合)<br />'; $i=0; do { echo $i; $i++; } while ( $i>10 ); echo '<br /><br />'; echo 'while文の場合)<br />'; $j=0; while ( $j>10 ){ echo $j; $j++; } ; ?> |
0
while文の場合)
上記の出力結果の通り、処理を実行した後に、繰り返し条件の判定をするdo while文では、必ず一度は処理が実行されます。しかし、while文は処理を実行する前に、繰り返し条件の判定をするため、条件に当てはまらない場合には、処理が一度も実行されません。
PHPのdo while文でbreakとcontinueを使う
PHPの繰り返し処理で利用されるbreakとcontinueですが、do while文でも問題なく使うことができます。実際にbreakとcontinueの動作を確認してみましょう。
まずは、breakを使ってdo while文の繰り返し処理を終了してみます。
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php $i=0; do { if($i == 5){ break; } echo $i; $i++; } while ( $i<10 ); ?> |
上記サンプルコードでは、変数iの値が「5」の場合にループ処理を終了したため、5以降の数値の出力はされずに処理が終了しました。
次に、continueを使って、do while文の繰り返し処理をスキップしてみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php $i=0; do { if($i == 5){ $i++; continue; } echo $i; $i++; } while ( $i<10 ); ?> |
continueの場合、変数iの値が「5」の場合に次のループにスキップするため、5の数値のみ出力されずに、他の数値は問題なく出力されます。
なお、上記サンプルコードのように変数を判定してcontinueする場合、インクリメントを忘れると無限ループに入ってしまいます。
PHPでdo while文を活用する方法
PHPプログラミングの繰り返し処理の中でも、do while文は使いどころが難しいと感じるかもしれません。do while文を使うべきかどうかの判断基準は、必ず一度は実行されるべき処理かどうかです。
例えば、繰り返しの条件式が、ループの中には絶対に一度は入る条件式のため、使い慣れているwhile文を使ったとします。処理に伴うログ出力なども、ループ処理内で行っていたとします。
しかし、ソースコードに問題があり、本来実行されるはずの繰り返し処理が、一度も実行されることなく、次の処理に移行すると、エラー箇所の特定は難しくなるでしょう。
また、do while文を使うことで、「この処理は必ず実行される」という意思表示にもなります。ソースコードのわかりやすさ(可読性)を高めるためにも、その時々に合った繰り返し処理を選択するようにしましょう。
まとめ
PHPプログラミングにおける繰り返し処理の1つにdo while文があります。do while文は、先に処理を実行して、条件式を満たし続けるかぎり処理を繰り返します。
使い方はwhile文とほぼ同じで、先に条件式を書くか後に条件式を書くかが、主な違いです。もちろん、breakやcontinueを使うこともできます。
必ず一度は処理を実行するdo while文は、他の繰り返し処理とは使い勝手が違うかもしれません。しかし、その特性を生かし、実行する処理の目的に合わせて繰り返し構文を選択しましょう。正しい繰り返し処理の選択が、可読性の高いソースコードに繋がります。