PHPプログラミング

最終更新日:
公開日:

入門

第10章 for文

この章では、前章のwhile文に引き続きループ処理をするための基本構文である「for文」について学びます。while文を簡略化したような構造なので、前章を理解していたらとても簡単な内容です。

目次

基本的な使い方

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

図1:

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:

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

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

コメントありがとうございます!
運営の参考にさせていただきます。