学生向けプログラミング入門 | 無料

学生向けにプログラミングを無料で解説。Java、C++、Ruby、PHP、データベース、Ruby on Rails, Python, Django

PHPプログラミング入門その12 繰り返しの制御

>>この記事には書き直した新しいページがあります。<<


<<前  [TOP]  次>>


PHPで、繰り返しの制御のひとつとしてforが用意されています。

for (初期設定式; 条件式; カウンタ式) {
  処理;
}



「初期設定式」でループ(繰り返し)の始まりが指定され、「条件式」が満たされている間、「処理」を実行します。


forの場合もifと同様に「条件式」にあてはまったときに実行される「処理」が1つのときに限り、「処理」の前後に{ }はなくてもかまいません。


以下のPHPプログラムをテキストエディタで作成して「phpsample」フォルダに保存して下さい。


【make-checkbox.php】

<p>チェックボックスをforでつくる</p>

<?php
	$var=array("apple", "banana", "orange");
	$fruits=array("りんご", "バナナ", "オレンジ");

	for ($i=0; $i<count($var); $i++) {
		print("<input type=\"checkbox\" name=\"${var[$i]}\">${fruits[$i]}<br>\n");
	}
?>



関数count()は、引数の配列にいくつの要素があるかを返します。
もし、引数に単なる変数を指定した場合、その変数が存在していれば「1」を返します。


Apacheを起動し、Webブラウザで「http://localhost/phpsample/make-checkbox.php」にアクセスして実行結果を確認してください。





PHPで配列の要素にアクセスする場合は、先のforよりもforeachを使用した方が便利です。


次の書式は単純に配列から値を取り出すときに使用します。

foreach (配列 as 値を格納する変数) {
  処理;
}



次の書式は配列のインデックスと値を取り出すときに使用します。

foreach (配列 as インデックス(添字)を格納する変数 => 値を格納する変数) {
  処理;
}



以下のPHPプログラムをメモ帳で作成して、「phpsample」フォルダに保存して下さい。


【make-checkbox2.php】

<p>チェックボックスをforeachでつくる</p>

<?php
	$fruits=array('apple'=>"りんご", 'banana'=>"バナナ", 'orange'=>"オレンジ");

	foreach ($fruits as $val) {

		print("${val}<br>\n");
	}


	foreach ($fruits as $index => $val) {

		print("<input type=\"checkbox\" name=\"${index}\">${val}<br>\n");

	}

?>



Webブラウザで「http://localhost/phpsample/make-checkbox2.php」にアクセスして実行結果を確認してください。





PHPではfor,foreachの他に、while/do-whileといった構文でも繰り返しの制御ができます。


whileは条件式が真の場合に処理を実行します。

while ( 条件式 ) {
  処理;
}



do-whileも条件式が真の場合に処理を実行します。
whileとの違いは、最低1度は処理が実行される点です。

do {
  処理;
} while ( 条件式 );



以下のPHPプログラムをメモ帳で作成して、「phpsample」フォルダに保存して下さい。


【whiletest.php】

<p>whileとdo-whileの違い</p>

<?php
	$val=1;

	//実行されない
	while ($val > 2) {
		print("${val}回 while()を実行<br>\n");
		$val++;
	}

	$val=1;

	//doのみ実行される
	do {
		print("${val}回 do-while()を実行<br>\n");
	
	}
	while ($val > 2) ;
		
?>



while(){}の方は1番始めの条件チェックで偽となるので一度もwhile内の処理は行われません。
do-while()は、条件が偽でも1度は処理が行われます。


Webブラウザで「http://localhost/phpsample/whiletest.php」にアクセスして実行結果を確認してください。





繰り返しの制御構造を途中で抜けるにはbreakを使用します。


繰り返しの処理の途中でループの最初に戻るにはcontinueを用います。


breakやcontinueは、何ブロック抜けるかを記述できます。
例えば二重ループで単に「break;」と書けば、内側のループを抜けるだけですが、「break 2;」とすれば、すべてのループを抜けることになります。


以下のPHPプログラムをメモ帳で作成して、「phpsample」フォルダに保存して下さい。


【breaktest.php】

<p>breakとcontinue</p>

<?php
	print("break;を使用<br>\n");

	for ($i=0; $i<5; $i++) {
		for ($j=10; $j<50; $j+=10) {
			if ($j == 20) {
				break;
			}
			print("\$i=${i}, \$j=${j}<br>\n");
		}
	}

	print("<br>break 2;を使用<br>\n");

	for ($i=0; $i<5; $i++) {
		for ($j=10; $j<50; $j+=10) {
			if ($j == 20) {
				break 2;
			}
			print("\$i=${i}, \$j=${j}<br>\n");
		}
	}

	print("<br>continue;を使用<br>\n");

	for ($i=0; $i<5; $i++) {
		for ($j=10; $j<50; $j+=10) {
			if ($j == 20) {
				continue;
			}
			print("\$i=${i}, \$j=${j}<br>\n");
		}
	}

	print("<br>continue 2;を使用<br>\n");

	for ($i=0; $i<5; $i++) {
		for ($j=10; $j<50; $j+=10) {
			if ($j == 20) {
				continue 2;
			}
			print("\$i=${i}, \$j=${j}<br>\n");
		}
	}

?>



Webブラウザで「http://localhost/phpsample/breaktest.php」にアクセスして実行結果を確認してください。





<<前  [TOP]  次>>