本記事では、PHPのwhile文とdo~while文の使い方・書き方・違いについて解説しています。
- PHPの基本構文からクラス・データベース連携・セキュリティまで学べる
- PHPによるWebアプリ開発の基礎・基本テクニックを学べる
Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!
初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!
変数名/関数名にもう悩まない!
- 美しいコードが書けるが自然と書けるようになる
- 他の開発者が理解しやすいコードになる
while文・do~while文の使い方・書き方
while文とdo~while文の基本的な使い方は以下のとおりです。
<?php
while (条件式) {
// 条件式がtrueの時に実行させたい処理を記述
}
<?php
do {
// 条件式がtrueの時に実行させたい処理を記述
} while (条件式);
while文とdo~while文は条件式の結果がtrueの時にループを繰り返す命令です。実際に、while文とdo~while文を使用したサンプルコードを用意したので、動作確認してみましょう。
<?php
$i = 1;
while ($i <= 3) {
echo "{$i}回目の処理です <br />";
$i++;
}
/* 実行結果 *
* 1回目の処理です
* 2回目の処理です
* 3回目の処理です
*/
<?php
$i = 1;
do {
echo "{$i}回目の処理です <br />";
$i++;
} while ($i <= 3);
/* 実行結果 *
* 1回目の処理です
* 2回目の処理です
* 3回目の処理です
*/
今回設定した条件式は「$i <= 3」です。これは、変数$iの値が3以下の時はtrueを返しループ処理を実行し4以上の時にfalseを返しループ処理を抜けるという意味です。
while文とdo~while文は、全く同じ実行結果を返していることが分かります。while文とdo~while文は使い方が少し違うけど同じ結果を返すなら好みで使っていいの?と思われますが特定の場面で違う挙動を見せます。その違いについて見ていきましょう。
while文とdo~while文の違い
下記のコードを実行すると、皆さんどのような実行結果が返ってくると思いますか?少し考えてみましょう。
<?php
$i = 4;
while ($i <= 3) {
echo "{$i}回目の処理です <br />";
$i++;
};
<?php
$i = 4;
do {
echo "{$i}回目の処理です <br />";
$i++;
} while ($i <= 3);
正解は、while文は何も実行されずdo~while文は「4回目の処理です」とブラウザに表示されます。何故このような違いが表れるのか、その理由はwhile文とdo~while文は条件式を判定するタイミングが違うからです。
while文はループ処理を実行する前に条件式を判定します。つまり、「$i(4) <= 3」はfalseを返すため一度もループ処理を実行しません。しかし、do~while文は一度ループ処理を実行してから条件式を判定するため「4回目の処理です」が表示されます。