【PHP】while文で繰り返し処理を行う!書き方や使い方を分かり易く解説!|フライテック
繰り返し処理はPHPだけでなく、他の言語で重要な機能の一つです。
ここでは、初心者にも分かり易くPHPのwhile文の書き方、使い方を解説していきます。
ここで繰り返し処理をしっかり学びましょう!
目次
while文(繰り返し処理)とは
先生が 30人の生徒に宿題のプリントを印刷しようとします。
毎回、印刷ボタンを押すのは面倒であり、時間がかかります。
「印刷、印刷、印刷…」という命令を30回も行うので、たくさんの命令をプリンタ側に伝えてしまいます。
しかし、プリンタには同じ内容を何部でも印刷する機能があります。
つまり、30回印刷ボタンを押すよりも、部数を設定して印刷ボタンを押す方がとても早いです。
「30回印刷する」という命令がだけなので時間もかからず、分かりやすい命令をプリンタ側へ伝えることができます。
このように、一つの命令で処理を何度も繰り返すことを繰り返し処理といいます。
繰り返し処理はある条件がtrueの間は繰処理を行いますが、falseになったら処理を終了します。
while文の書き方
if文の書き方は以下のようになります。
1 2 3 4 5 |
<?php while (条件式) { // 処理内容; } ?> |
while文の基本的なサンプルコード
while文の基本的なサンプルコードを見てみましょう。
次のサンプルコードでは、while文を使って次の例では、1から5までの数字を表示するコードになっています。
if文の例1
1 2 3 4 5 6 7 8 |
<?php $count = 1; while($count <= 5) { echo "数字は: $count <br>"; $count++; } ?> |
出力結果
数字は: 1
数字は: 2
数字は: 3
数字は: 4
数字は: 5
変数countの値は1である為、条件式では5になるまではtrueと判断されます。
その為、while文の下に書かれてある処理が繰り返して実行されます。
while文の使い方
PHPでは、次の繰り返し処理があり、繰り返し処理中に使用することができる文があります。
while文: 条件式がtrueの場合、括弧内の処理を実行する。falseの場合は繰り返し処理を終了する
do-while文: 条件式で確認する前にdoの括弧内の処理を実行し、その後に条件式がtrueの場合、再びdoの括弧内の処理を実行する。falseの場合は繰り返し処理を終了する。
for文: 条件式がtrueの場合、括弧内の処理を実行する。falseの場合は繰り返し処理を終了する
break文: 条件式がtrueであっても強制的に繰り返し処理を終了する
continue文:くり返し処理の先頭へスキップする。繰り返し処理は実行されるが、continue文以降の処理は実行されない。
do-while文の使い方
do-whileはコードのブロックを1回ループし、指定された条件がtrueである限りループを繰り返します
do-whileは以下のように書きます。
1 2 3 4 5 |
<?php do { // 処理内容; } while (条件式); ?> |
do-whileループのさまざまな部分は次のとおりになります。
条件式:この式では、条件をテストする必要があります。
条件がtrueと評価された場合、ループの本体を実行し、処理内容を実行します。
それ以外の場合は、whileループを終了します。
条件式に入る前にdoの括弧内の処理が実行され、条件式がtrueだった場合は、再びdoの括弧内の処理を行います。
条件式がfalseだった場合は、do-whileの処理を終了します。
do-whileを使った次の例を見てみましょう。
例
1 2 3 4 5 6 7 8 |
<?php $count = 0; do { echo "数字は: $count\n"; $count = $count + 1; } while ($count <= 5); ?> |
出力結果
数字は: 0
数字は: 1
数字は: 2
数字は: 3
数字は: 4
数字は: 5
break文の使い方
break文はwhile文の処理中に使用できます。
break文を使用することで、while文の条件がtrueであっても強制的に終了することができます。
break文の書き方は以下のようになります。
1 2 3 4 5 6 |
<?php while (条件式) { // 処理内容; break; } ?> |
条件式がtrueだった場合、処理内容を実行します。
しかし、ここでbreak文を通る為、強制的にwhile文から抜けることになります。
break文を使った次の例を見てみましょう。
まずは、変数aの値を変数bの値より大きくして処理を行ってみます。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php $count = 1; $sum = 0; while ($count <= 10){ $sum = $sum + $count ; if ($sum > 40){ echo "40を越えたので終了。回数: $count"; break ; } $count = $count + 1 ; } ?> |
出力結果
40を越えたので終了。回数: 9
条件式の($count <= 10)より変数countが10になるまではtrueと判断され、繰り返し処理が実行されます。 しかし、countが9になると変数sumが40を超える為、ifの括弧内の処理が実行されます。 その後にbreak文を通る為、10回まで繰り返し処理は行われず、9回目で強制的に抜け出します。
continue文の使い方
continue文は繰り返し処理をスキップしたいときに使います。
continue文を使うことで、、繰り返し処理からスキップすることができますが繰り返し処理は実行されます。
continue文の書き方は以下のようになります。
1 2 3 4 5 6 |
<?php while (条件式) { // 処理内容; continue; } ?> |
条件式がtrueだった場合、処理内容を実行します。
しかし、ここでcontine文を通る為、while文の先頭へスキップすることになります。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php $count = 1; while ($count <= 10){ $count = $count + 1 ; if ( $count == 9){ echo "9になったのでスキップ。\n"; continue; } echo "$count\n"; } ?> |
出力結果
2
3
4
5
6
7
8
9になったのでスキップ。
10
11
while文は変数countが1〜10までは繰り替え処理を行うようになっています。
司会、変数countが9の場合、if文を通り、continue文を通る為、
echoをスキップして繰り返し処理の先頭に戻ります。
for文
以前紹介しましたが、while文での他にもfor文という繰り返し処理を行う構文があります。
こちらもwhile文ほとんど同じですが、書き方は異なります。
for文の書き方は以下のようになります。
1 2 3 4 5 |
<?php for (初期値; 条件式; 更新式) { // 処理内容; } |
条件式の値がtrueだった場合、for文の括弧内の処理を繰り返して行うようになります。
条件式の値がfalseだった場合、for文から抜け出します。
for文の例を見てみましょう。
例
1 2 3 4 5 6 7 |
<?php for ($i = 1; $i <= 10; $i++) { echo "$i\n"; } ?> |
出力結果
1
2
3
4
5
6
7
8
9
10
変数iの初期値が1である為、条件式はtrueとなり、for文の括弧内の処理を行います。
そして更新式により処理を行うごとに変数iが+1ずつされていきます。
変数iが11になると条件式はfalseと判断され、for文から抜け出します。
よって1〜10の値が出力されます。
無限ループ
ループを扱う際は常に注意が必要です。
これは、条件式を誤って設定すると、forループが永久に実行されるためです。
これは「無限ループ」と呼ばれます。
無限ループを使った例
無限ループを使った例をwhile文を使ってみてみましょう。
例
1 2 3 4 5 6 7 8 |
<?php $count = 1; while($count <= 5) { echo "数字は: $count\n"; $count--; } ?> |
出力結果
数字は: 1
数字は: 0
数字は: -1
数字は: -2
数字は: -3
数字は: -4
数字は: -5
…
ここでは、変数countの初期値が1で更新式はデクリメントになるので
条件式($count <= 10)はfalseになることがなく、処理が永久に実行されます。
つまり、無限ループを間違えて実行してしまうと処理が終わらなくなるのです。
それが原因でPCが止まったり、アプリが落ちたりするので無限ループはなるべく避けましょう。
while文とfor文の違い
誰しも最初は思うと思います。while文とfor文の違いって書き方が違うだけで同じじゃないのか?」ということです。
この二つは似ているようですが、使用する意図が異なります。
その違いを例を見ながら解説していきましょう。
while文、for文を使った例
while文の例
1 2 3 4 5 6 7 |
<?php $cnt = 0; while ($cnt <= 10) { echo $cnt; 4cnt++ ?> |
出力結果
012345678910
for文の例
1 2 3 4 5 6 |
<?php for ($cnt = 0; $cnt <= 10; $cnt++) { echo $cnt; } ?> |
出力結果
012345678910
両者とも同じ結果となりますが、使用する意図が異なります。
for文は「初期値が0で、条件式が($cnt <= 10)で更新式が$cnt++なので11回処理を行うことになるな!」
という認識になり、
while文は「初期値を0と決め、更新式を$cnt++にしてみて、とりあえず条件式($cnt <= 10)がfalseになるまで処理を行ってみるかー」
という認識になります。
つまりfor文は繰り返す回数が特定している場合の処理に適しており、
while文は何回繰り返すか分からないけど、とにかく条件ごとに値を処理をしたいときに適しています。
繰り返し処理だからfor文、while文を使うにではなく、状況に適した繰り返し処理を使うようにしましょう。
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。