【作って納得!PHP入門】while文を使ってみよう(繰り返し処理)

PHP

前回はforeach文について記載しました。

今回は繰り返し処理(ループ)のwhile文について見ていきます。

最初にwhile文についての説明をします。
その後に、実際に簡単なプログラムを作成して、while文について学んでいきます。

この記事の目標(作るもの)について

while文を使用した簡単なプログラムを作成し、下記のように画面に結果を出力して確認します。

PHPのwhile文とは?

PHPのfor文と同じようにループ処理をしますが、while文は条件だけを渡して繰り返し処理(ループ)をします。
while文は条件がtrue(正しい)間、処理を繰り返し行います。

whileの基本的な書き方

実際の構文としては、このようになります。

while (条件) {
 // ...繰り返す処理...
}

[条件]の箇所に繰り返し処理が継続する条件を記載します。
[条件]がtrue(正しい)間、処理を繰り返し行います。

[条件]はいつ抜けるかを気にして書くようにします。
[条件]の付け方を間違うと、無限ループになって、バグの要因になるからです。

実際の例で書くと下記のようになります。

$i = 0;

while ($i < 5) {
    echo "Hello{$i} "; // 結果は"Hello0 Hello1 Hello2 Hello3 Hello4 "と出力される
    $i++;
}

上記コードでは、最初に$iに0を格納しています。
そして条件として、$i < 5をwhile文の繰り返し処理(ループ)条件として渡しています。

$iは0からなので、“0, 1, 2, 3, 4”まで、5回繰り返します。
繰り返し処理(ループ)の最初に出力処理をしています。
“Hello{$i} “となっているので、$iは添字が出力されて、“Hello0 “となります。

その次の行で$i++となっています。
繰り返し処理(ループ)の終わりに$iに「+1」して、カウンタを進めています。

カウンタを進めた後は、ループの先頭に戻って、$i < 5が再度、評価されます。
“0”の次は”1″なので、まだ繰り返し条件がtrueになります。

繰り返し条件がtrueになる間は、このように処理が繰り返されます。
結果、ここで出力される内容は“Hello0 Hello1 Hello2 Hello3 Hello4 “となります。

それでは、実際にコードを書いて、確認していきましょう。

PHPでwhile文を使ってみよう

実際にwhile文を使用して、処理を書いてみましょう。
前回作成したcodelike_web_dockerの配下に、browsers_while.phpという名前で下記の内容で保存します。

<?php

$developers = ["google", "mozilla foundation", "microsoft"];
$browsers = ["chrome", "firefox", "internet explorer"];
$i = 0;

$html = '<table>';
$html .= '<tr><th>開発元</th><th>ブラウザ</th></tr>';
while ($i < 3) {
    $html .= "<tr><td>{$developers[$i]}</td><td>{$browsers[$i]}</td></tr>";
    $i++;
}
$html .= '</table>';

echo $html;

解説

今回はブラウザの開発元とブラウザ名を表示するプログラムを書いてみました。

最初に、2つの配列を作っています。
$developersが開発元で、$browsersがブラウザ名の配列です。

$developers = ["google", "mozilla foundation", "microsoft"];
$browsers = ["chrome", "firefox", "internet explorer"];
$i = 0;

その後にカウンタ用変数として、$iを用意しています。初期値は”0″です。

そして、出力用の内容を作成していきます。
$htmlという変数に出力する内容を格納しています。

今回はテーブルタグを使用して、出力内容を作成しています。
最初の行で、テーブルの開始タグを入れています。次の行がテーブルの項目名のタグです。

$html = '<table>';
$html .= '<tr><th>開発元</th><th>ブラウザ</th></tr>';

ここで、「.=」が登場していますが、これは既に入っている文字列をそのまま残して、追加していってくれます。

次の行から、while文が始まっています。
$iが3未満までの間、繰り返されるので、“0, 1, 2”と3回処理されます。

while ($i < 3) {
    $html .= "<tr><td>{$developers[$i]}</td><td>{$browsers[$i]}</td></tr>";
    $i++;
}

テーブルの項目として、作成した配列の$i番目のデータを出力しています。($developers[$i]$browsers[$i]を指定しているところ)
出力したら、$iのカウンタを更新しています。

最後にecho $html;としています。
作成したテーブルを出力して、処理終了です。

動作確認

想定通りの結果が出力されているか確認してみましょう。前回作成した環境を立ち上げます。
browsers_while.phpの編集が終わったら、保存して下記にアクセスします。

http://localhost:8080/browsers_while.php

想定した結果が返ってきました!

for文とwhile文どちらを使用するか

基本的には$iなど、繰り返し処理用のカウンタを使用して繰り返し処理を書くはずです。
なので、一括で定義できるfor 文を使用するようにしたほうがいいです。
1行で定義されているほうが、コードが見やすく理解しやすくなるかと思います。

while文を使用するときはループの中で、カウンタの進み方を変則的に変えるなど、複雑な処理をする場合にはwhileを使用するといいかと思います。

おわりに

今回はwhile文を見ていきました。
基本的には、あまり使わないかもしれないですが、使用する場合にはバグにならないように条件文に気をつけて使っていきましょう。

その他のPHP入門のオススメ記事

そのほかに、このブログで書いているオススメ記事をご紹介します。

関数を使ってみよう

次回は作った環境を使用して、PHPの関数を使ってみましょう。

PHP入門の記事一覧に戻る

他のPHP入門記事もありますので、合わせてご確認ください。

参考

公式ドキュメント – while
PHP: while - Manual

コメント

タイトルとURLをコピーしました