【PHP入門】while文の書き方、breakやcontinueも解説します

投稿日: 作成:   更新:

PHPのwhile文について解説します。

  • PHPのwhile文の書き方が知りたい。
  • while文はどんな時に使う?

このような内容について解説します。

私はWEB開発中心に、フロントエンド、サーバーサイド、サーバー構築など経験豊富なエンジニアです。
これからプログラミングを始める方に向けて、少しでも分かりやすく解説していきたいと思います。

while文は、for、foreach文とは違い、Web開発であまり出番がないかもですが、PHPでループさせる手段の1つとして「こんなことができるんだ」と頭の片隅に覚えておくと良いかと思います。

それでは行きましょう!

while文の書き方

基本的な書き方

while文の基本的な書き方について、処理イメージと表で表してみました。

処理イメージ:

名称使い方意味
条件式$i < 5ループを続けるための条件を記述する

次にソースコードで書いてみます。

for文とは違い、あらかじめ「$i = 0;」などの変数を用意しておく必要があります。

また、while文の実行する処理の中で「$i++;」で1つ繰り上げるなど条件で使用する変数を変化させる必要があります。

<?php

// あらかじめ変数を用意しておく
$i = 0;

// 「5」より下の数字のときは実行
while ($i < 5) {
    echo $i;

    // 1つ繰り上げる
    $i++;
}

?>

実行結果:

whileの条件式が「$i < 5」なので、「01234」が表示できました。

ちなみに、最初の条件の判定でfalseの場合、ループは1回も実行されませんので注意ください。

無限ループには気を付けよう

もし、先ほどのソースコードで「1つ繰り上げる」記述をしなかった場合、while文から抜けられなくなり無限ループとなってしまいます。

<?php

$i = 0;

while ($i < 5) {
    echo $i;

    // 1つ繰り上げる処理を入れない
}

?>

実行結果:

while文はfor文の増減式とは違い、決められた場所に書く場所がないため、ついつい忘れがちになりますので注意ください。(for文でも増減式を書かなければ無限ループになりますが・・・)

break(抜け出す)

while文を途中で抜け出すには、「break;」を使用します。

先ほどの「基本的な書き方」のソースコードに、if文で「3」になったら抜け出すように変更してみます。

<?php

$i = 0;

while ($i < 5) {
    // 「3」の時にループを抜け出す
    if ($i == 3) {
        break;
    }

    echo $i;

    $i++;
}

?>

実行結果:

「3」でループを抜け出しましたので、「012」までが表示されました。

continue(スキップ)

while文の途中でスキップするときは、continueを使用します。

if文で「3」のときだけスキップしてみます。

continueをすると、echoの次の「$i++;」を通らなくなるので、無限ループにならないようにcontinue手前で1つ繰り上げる必要があります

<?php

$i = 0;

while ($i < 5) {
    // 「3」の時はスキップする
    if ($i == 3) {
        // 無限ループにならないよう1つ繰り上げる
        $i++;

        continue;
    }

    echo $i;

    $i++;
}

?>

実行結果:

do while文の書き方

PHPのwhile文には、他に「do while文」という書き方があります。

while文とは違い、必ず1回は処理を実行して処理の最後で条件式の判定をおこないます。

処理イメージ:

ソースコードで書いてみます。

<?php

// あらかじめ変数を用意しておく
$i = 0;

do {
    echo $i;

    // 1つ繰り上げる
    $i++;

} while ($i < 5);
// 「5」より下の数字のときは次回も実行

?>

実行結果:

while文のソースコードと同じく、5より下の数字「01234」が表示されました。

while文はどんな時に使うのか

PHPのwhile文はあまり使う場面がないかもしれません。
ほとんどのループ処理が、for文、foreach文で足りるものが多いです。

ただ、せっかくなのでwhile文を使って配列をHTMLのTableタグで表示してみましょう。

HTMLのTableで表示してみる

<table border="1">
    <tr>
        <th>No</th>
        <th>名称</th>
    </tr>
 
    <?php
        $arr = ['バナナ', 'イチゴ', 'すいか'];
 
        while (list($key, $value) = each($arr)) {
            $no = $key + 1;
            $name = $value;
            echo '<tr>';
            echo '<td>' . $no . '</td>';
            echo '<td>' . $name . '</td>';
            echo '</tr>';
        }
    ?>
</table>

実行結果:

while文で配列を扱うには、配列の数分をループさせるために「list()、each()」関数を使用して表示しています。

ただし、

each()関数はPHP7.2.0 以降では非推奨

になっているので、for文、foreach文を使用するようにしましょう。

なぜwhile文をあまり使うことがないのか?

先ほどの「each()関数はPHP7.2.0 以降では非推奨」の件もありますが、
Web開発のプログラム言語(PHP、JavaScript)に共通してwhile文を使うことはほとんどありません。

基本的にwhile文は入力待ちの処理で使うことが多く、ゲームのプログラミングするときは、コントローラーが右を押している間は1回のループで10px(ピクセル)ずつ進むなどの処理を処理を書いたりします。

ですが、HTMLには「onClick、onChange、onFocusout」などの入力待ち用の属性が用意されていて、while文で入力待ちをする必要がありません。

また、for、foreach文の方がスッキリとソースコード書けますので、積極的に使おうとしない限り、PHP、JavaSciptではwhile文は使うことがほとんどないでしょう。

まとめ

いかがだったでしょうか。
PHPのwhile文について次の内容で解説しました。

  • while文の書き方(基本的な書き方、無限ループ、breakで抜け出し、continueでスキップ)
  • do while文の書き方
  • while文はどんな時に使うのか(HTMLのTable表示、あまり使うことがない理由)

while文はあまり使うことがないという記事を書きましたが、while文の方がソースコードがスッキリと書ける場合もありますので、状況によってfor、foreach文と使い分けると良いでしょう。


プログラミングスクールをお探しの方へ

プログラミング学習を挫折せずに続けて成功できる人は

「目的目標を明確にすること」
「質問・相談できる環境を作ること」
「自己解決スキルを身に着けること」

この3つを大切にしてると思います。

ただ漠然とプログラミング学習をしているだけでは
すぐに身に付きませんので、プログラミングスクールがおすすめです。

  • テックキャンプ
    本気でIT業界に転職したい方におすすめです。
    転職できなかったら全額返金があります。
  • DMM WEBCAMP
    国から認定されているスクールです。
    やむなく離職中の方など、条件を満たしている方は教育訓練給付金が支給されます。
  • TechAcademy
    1週間の無料体験があります。
    気軽にスクールを体験したい方向けです。