PHP

第10章 for文

  1. 最終更新日:
  2. 公開日:

この章では、前章のwhile文に引き続きループ処理をするための基本構文である「for文」について学びます。

基本的な使い方

まずはfor文の基本的な形を見てみましょう。

図1:

for文の基本的な形

パッと見たところではwhile文よりもfor()は指定するものが多くなっています。
しかし動作で見てみると、コードを書く場所が変わっただけということが分かります。
次のコードを打って、実行してみてください。

PHP コード例

<?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:

while文の実行順序

図2の順序で見ていくと次のようになります。

  • 1. $indexを初期化し、
  • 2. while文の条件式を判定し、
  • 3. 正しい場合は{}内の処理を実行し、
  • 4. 忘れず$indexの値を更新して、2へ戻る

という流れになっています。
くどいようですが、for文も書く場所が異なるだけで意味は同じです。
図3はfor文の実行順に数字を付けたものになります。

図3:

for文の実行順序
  • 1. $indexを初期化し、
  • 2. 条件式の判定を行い、
  • 3. 正しい場合は{}内の処理を実行し、
  • 4. $indexの値を更新し、2へ戻る

while文for文を比較してみると、1の値を初期化するところと、4の値の更新を書く場所だけが異なります。
どちらが分かりやすいかは意見が分かれそうなところですが、上のようなシンプルなループであればfor文の方がコードをコンパクトにまとめられます。

実践的な使用例

前章「while文」の「# 実践的なwhile文の使い方」で扱ったECサイト上の商品を記述した配列を、今回はfor文使って書いてみましょう。
出力まで同じだと退屈なので、今回は商品一覧を表示してみます。

PHP コード例

<?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文と同様、無限ループに注意する

記事一覧

  1. 第1章 PHPが動く仕組み
  2. 第2章 変数と定数
  3. 第3章 配列
  4. 第4章 スーパーグローバル
  5. 第5章 クッキーとセッション
  6. 第6章 サーバー情報の取得
  7. 第7章 if文
  8. 第8章 switch文
  9. 第9章 while文
  10. 第10章 for文
  11. 第11章 foreach文
  12. 第12章 独自の関数
  13. 第13章 オブジェクト指向
  14. 第14章 クラス
  15. 第15章 オブジェクト

記事一覧