PHP

【PHP】while文とdo~while文の使い方・書き方・違いについて

本記事では、PHPのwhile文とdo~while文の使い方・書き方・違いについて解説しています。

PHPの学習におすすめ参考書
気づけばプロ並みPHP 改訂版–ゼロから作れる人になる!

本書情報
出版社リックテレコム
著者谷藤 賢一
発売日2017/3/6
ページ数331ページ
レビュー
(Amazon)
(168件)
先輩くん
先輩くん
Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!
後輩ちゃん
後輩ちゃん
初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!

綺麗なコードが書けるようになる!
リーダブルコード-より良いコードを書くためのシンプルで実践的なテクニック

本書情報
出版社オライリージャパン
著者Dustin Boswell / Trevor Foucher
発売日2012/6/23
ページ数260ページ
レビュー
(Amazon)
(620件)
先輩くん
先輩くん
より良いコードを書きたい人におすすめの本だよ!
後輩ちゃん
後輩ちゃん
10以上前の書籍ですが、内容は今でも役に立つものばかりです!

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回目の処理です」が表示されます。

ブログランキング・にほんブログ村へ PVアクセスランキング にほんブログ村