【PHPの基礎】while文による繰り返し処理
PHPの「while文」を使った繰り返し処理について学習します。
while文とは
while文は、条件が成立している間、繰り返し処理を行う制御文です。
for文は繰り返す回数があらかじめ決まっている時に使用するのに対し、while文は繰り返す回数があらかじめ決まっていない場合に使用します。
while文の書式
while (条件式) {
実行する処理;
}
while文の処理の流れ
1. 条件式の真偽判定が行われる
2. trueであれば、{}内の処理が実行される
3. 実行後、再度条件式の真偽判定が行われる
サンプルコード
変数「$i」が 5より小さい場合に繰り返し処理を行う例です。
1 2 3 4 5 6 7 |
<?php $i = 0; while ( $i < 5 ) { echo $i; $i++; } ?> |
実行結果:
while文の無限ループに注意
while文は繰り返し回数が決まっていないため、条件が常に成立してしまうと、処理を永遠に繰り返してしまいます。これを無限ループといいます。
以下は無限ループの例です。
1 2 3 4 5 6 |
<?php $i = 0; while ( $i < 5 ) { echo $i; } ?> |
先ほどの記述例から「$i++」を抜いた状態です。
変数「$i」の値を増やす処理を書いていないため、変数「$i」の値はいつまでたっても「0」のままで、条件式でtrueが返り続け処理を永遠に繰り返してしまいます。
処理が終わらないプログラムはPCへ負担をかけ続けることになります。
繰り返し処理をスキップする「continue」
continueは繰り返し処理をスキップしたいときに使います。
繰り返し処理から抜け出したい位置にcontinueを挿入します。
【例】iが3になったときに、処理をスキップする
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php $i = 0; while ( $i < 5 ) { if($i == 3) { // 無限ループにならないようiの値を1つ増やす $i++; continue; } echo $i; $i++; } ?> |
実行結果
「3」をスキップするので、「0」「1」「2」「4」が表示されます
continueをすると、echoの次の「$i++;」を通らなくなるので、
無限ループにならないようにcontinue手前でiの値を1つ増やす必要があります。
繰り返し処理から抜ける(終了する)「break」
breakは繰り返し処理を途中で抜ける(終了する)ときに使います。
【例】iが3になったときに、処理を抜ける(終了する)
1 2 3 4 5 6 7 8 9 10 |
<?php $i = 0; while ( $i < 5 ) { if($i == 3) { break; } echo $i; $i++; } ?> |
実行結果
「3」で処理を抜けるので、「0」「1」「2」が表示されます
do…while文
while文には、「do…while文」という書き方もあります。
do…while文は、条件が成立しなくても必ず1度は処理を実行します。
do…while文の書式
do {
実行する処理;
} while (条件式)
具体例
1 2 3 4 5 6 7 |
<?php $i = 0; do { echo $i; $i++; } while ($i < 5); ?> |
実行結果