最終更新日:
公開日:
入門
第10章 for文
この章では、前章のwhile文に引き続きループ処理をするための基本構文である「for文」について学びます。while文を簡略化したような構造なので、前章を理解していたらとても簡単な内容です。
目次
基本的な使い方
まずはfor文の基本的な形を見てみましょう。
パッと見たところでは、while文よりもfor(〜)内で指定するものが多くなっています。
しかし動作で見てみると、コードを書く場所が変わっただけということが分かります。
次のコードを打って、実行してみてください。
コード例
<?php
for( $index = 1; $index < 5; $index++ ) {
echo "<p>" . $index . "回目のループ";
}
「1回目のループ」〜「4回目のループ」と出力されると思います。
for(〜)内を1つずつ分解し、それぞれの役割を解説します。
1つ目の$index = 1;は変数の初期化です。条件式の判定で使う変数の初期値をここで設定します。
ここは、for文に入ったときに1度だけ実行されます。
2つ目の$index < 5;は、お馴染みの条件式です。while文の条件式と全く同じ意味を持ち、条件式の判定が正しい(true)限り{〜}内の処理をループします。
3つ目の$index++は値の更新です。ここは、2つ目の条件式が正しかった場合に、{〜}内の処理が終わったタイミングで実行されます。
while文では値の更新を{〜}内に$index++と書いていましたが、for文では条件式の後ろに書きます。
while文との比較
for文の動きを分解してみると、前章のwhile文と同じ動きをしていることがよく分かるかと思います。
復習を兼ねて、まずはwhile文の実行順序を確認しましょう。
図2はwhile文の実行順に数字を付けたものです。
図2の順序で見ていくと次のようになります。
- 1. $indexを初期化し、
- 2. while文の条件式を判定し、
- 3. 正しい場合は{〜}内の処理を実行し、
- 4. 忘れず$indexの値を更新して、2へ戻る
という流れになっています。
くどいようですが、for文も書く場所が異なるだけで意味は同じです。
図3はfor文の実行順に数字を付けたものになります。
- 1. $indexを初期化し、
- 2. 条件式の判定を行い、
- 3. 正しい場合は{〜}内の処理を実行し、
- 4. $indexの値を更新し、2へ戻る
while文とfor文を比較してみると、1の値を初期化するところと、4の値の更新を書く場所だけが異なります。
どちらが分かりやすいかは意見が分かれそうなところですが、上のようなシンプルなループであれば、for文の方がコードをコンパクトにまとめられます。
実践的な使用例
前章「while文」の「# 実践的なwhile文の使い方」で扱った、ECサイト上の商品を記述した配列を、今度はfor文で使ってみましょう。
出力まで同じだと退屈なので、今回は商品一覧を表示してみます。
コード例
<?php
$item = array();
$item[0] = array(
"name" => "ジーンズ",
"price" => 7980,
"size" => "M"
);
$item[1] = array(
"name" => "Tシャツ",
"price" => 2980,
"size" => "M"
);
$item[2] = array(
"name" => "パーカー",
"price" => 4400,
"size" => "M"
);
?>
<table>
<tr>
<th>商品名</th><th>金額</th><th>サイズ</th>
</tr>
<?php
for( $i = 0; isset($item[$i]); $i++ ) {
echo '<tr><td>';
echo $item[$i]['name'];
echo '</td><td>';
echo $item[$i]['price'];
echo '</td><td>';
echo $item[$i]['size'];
echo '</td></tr>';
}
?>
</table>
実行してみて、次のように一覧が出力されたら成功です。
出力例
商品名 金額 サイズ
ジーンズ 7980 M
Tシャツ 2980 M
パーカー 4400 M
配列の宣言部分は前章と同様です。
HTMLのtableタグを使っているので少しコードが長くなってしまいましたが、for文の{〜}内の処理は全てecho関数による出力です。
ループを制御しているfor(〜)内についても、変数$iの初期化(0を代入)、isset関数による変数の存在チェック、そして処理後の$iの値の更新となっています。
for文を使っていること以外は、前章のwhile文で書いた処理と大きな違いはありません。
まとめ
for文の扱い方を見てきました。ループ処理の書き方について、イメージを掴んでいただけたでしょうか。
同じループ処理のための構文なのでwhile文と同じように使うことができますが、for文で書いた方がコードをシンプルにできることが多いです。
次の章では、最後のループ処理の基本構文について見ていきます。
この章で学んだこと
- for文はfor(〜)に(1)値の初期化、(2)条件式、(3)値の更新の3つを記述する
- while文と同様、無限ループに注意する