PHP for文 処理を繰り返すサンプル(break/continue)

説明 for文とは
サンプル for文のサンプル
HTMLにfor文を書く時
  for文で配列の値を取得
break ループを抜ける(break)
2重ループでbreakを使用
  2重ループを抜ける
continue ループの先頭に戻る(continue)
2重ループでcontinueを使用
foreach文 foreach文で配列の値を取得

for文とは

for(初期化式(1.値を初期化) ; 条件式(2.条件) ; 増減式(3.値を更新)){
    実行される処理
}
  • 処理を繰り返す時に使用します。最初にforを書くのでfor文と呼ばれます。繰り返しはループとも呼ばれます。
  • 初期化式は、最初に1回だけ実行されます。
  • 使用する変数をカウンター変数またはループ変数といいます。変数名はiやjがよく使用されます。
  • 条件式がtrueの間、処理を繰り返します。
  • 増減式(3.値を更新)でカウンター変数/ループ変数の値が変わります。
  • 条件式がfalseになるとループ処理を終了します。

 

for文のサンプル

<?php
for ($i = 0; $i < 3; $i++) {
	echo $i; //0 1 2が出力される
}

2行目は、初期化式($i = 0)によりi は0から始まります。
増減式($i++)によりiの値は、1ずつ増えていきます。
条件式($i < 3)がtrueの間は処理を繰り返し、iが3になるとfalseになるので終了します。

 

HTMLにfor文を書く時

<?php for ($i = 0; $i < 3; $i++) : ?>
	<p><?= $i ?></p><!-- 0 1 2が出力される -->
<?php endfor; ?>

1行目のforの後ろには、コロン:がついています。
3行目は、endforがあります。for文の終わりが、わかりやすくなっています。

 

for文で配列の値を取得

<?php
$color = ["赤", "黄", "青"]; // 配列

for ($i = 0, $size = count($color); $i < $size; ++$i) {
	echo $color[$i]; // 赤 黄 青が出力される
}

2行目は、配列です。
4行目の$size = count($color)は、配列のサイズを取得しています。
条件式($i < $size)でcountを使用すると都度countを実行してしまい遅くなるためです。
5行目は、変数と添字で配列の値を表示しています。配列の添字は0から始まります。

 

ループを抜ける(break)

<?php
for ($i = 0; $i < 3; $i++) {
	if ($i === 1) {
		break;
	}
	echo $i; // 0が出力される
}

4行目のbreakでfor文を抜けます。0のみ出力されます。

 

2重ループでbreakを使用

内側のfor文を抜けます。

<?php
for ($i = 0; $i < 2; $i++) {
	for ($j = 0; $j < 2; $j++) {
		if ($j === 0) {
			break;
		}
		echo "j=" . $j; //出力なし
	}
	echo "i=" . $i; // i=0 i=1が出力される
}

2,3行目にfor文があり2重ループ(入れ子)になっています。
5行目のbreakは、内側のfor文のみ抜けます。

 

2重ループを抜ける

<?php
for ($i = 0; $i < 9; $i++) {
	for ($j = 0; $j < 9; $j++) {
		if ($j === 3) {
			break 2;
		}
		echo $j; //0,1,2が出力される
	}
	echo $i; // 出力なし
}
echo "終了"; //出力される

5行目は、breakの引数に2を指定しています。外側のfor文を抜けます。
PHPの5.4.0からbreakの引数に変数を渡すことができなくなりました。

 

ループの先頭に戻る(continue)

<?php
for ($i = 0; $i < 3; $i++) {
	if ($i === 1) {
		continue;
	}
	echo $i; // 0 2が出力される
}

4行目のcontinueでループ処理の先頭の2行目に戻ります。0と2が出力されます。

 

2重ループでcontinueを使用

内側のfor文の先頭に戻ります。

<?php
for ($i = 0; $i < 2; $i++) {
	for ($j = 0; $j < 2; $j++) {
		if ($j === 0) {
			continue;
		}
		echo "j=" . $j; //j=1 j=1が出力される
	}
	echo "i=" . $i; // i=0 i=1が出力される
}

2,3行目にfor文があり2重ループ(入れ子)になっています。
5行目のcontinueは、内側のfor文の先頭に戻ります。

 

foreach文で配列の値を取得

foreach(変数1 as 変数2){
  繰り返される箇所(変数2を使用)
}
  • 上記for文との違いは、変数の値を加算する処理がありません。
  • 配列の要素を順番にアクセスします。
<?php
$color = ['赤', '黄', '青'];

foreach ($color as $a) {
	echo $a; //赤 黄 青が出力される
}

2行目は、配列です。
4行目は、foreach文で配列の全ての要素にアクセスします。カウンター変数を使用していません。

関連の記事

PHP if文 条件分岐を行うサンプル
PHP while文とdo…while文のサンプル

△上に戻る