トップ > php > 

PHP制御構文リファレンス|条件分岐・ループからファイル読み込みまで

PHP制御構文リファレンス|条件分岐・ループからファイル読み込みまで

if、for、foreach等の基本から、switch、break/continueの制御、require/includeによる外部ファイル連携まで詳しく解説。現場品質のサンプルプログラムを掲載。

制御構文 目次

  1. 制御構文
    1. if
    2. if, else
    3. if, else if, else
    4. for
    5. switch
    6. break
    7. continue
    8. while

制御構文

if

if 文は、if ( 条件式 ) の条件式の比較結果が true の場合、if ( 条件式 ) { 処理 } の処理を実行する。false の場合、処理を実行しない。

以下の例では「$i は10より大きい」が表示される。

<?php
$i = 11;
if ($i > 10) {
	echo '$i は10より大きい';	/* $i が 10より大きい数値なら表示 */
}
?>

「if ( 条件式 ) 処理」のように {} を省略することも可能。※バグの温床になるので、望ましくない

<?php
$i = 11;
if ($i > 10)
	echo '$i は10より大きい';	/* $i が 10より大きい数値なら表示 */
?>

以下の例では hogehoge が表示される。

<?php
$var = 'hogehoge';
if ($var === 'hogehoge') {
	echo $var;	/* hogehoge 表示 */
}
?>

文字列の比較は、== を用いると暗黙の型変換により正確な比較ができなくなるため、厳密比較(値と型を同時に比較する) === を用いる。

<?php
if ("100" === "100.0") { ... }	/* 偽(false)になる */
if ("100" == "100.0") { ... }	/* 真(true)になってしまう */

if ("100" === "10e1") { ... }	/* 偽(false)になる */
if ("100" == "10e1") { ... }	/* 真(true)になってしまう */

if ("100" === "0100") { ... }	/* 偽(false)になる */
if ("100" == "0100") { ... }	/* 真(true)になってしまう */
?>

以下の比較はすべて false になる。

<?php
if (false) { ... }	/* boolean型のfalse */
if (0) { ... }		/* integer型の0 */
if (0.0) { ... }	/* float(double)型の0.0 */
if ('') { ... }		/* 空の文字列 */
if ("") { ... }		/* 空の文字列 */
if ('0') { ... }	/* 文字列 '0' */
if ("0") { ... }	/* 文字列 "0" */
if (array()) { ... }	/* 要素数が0個の配列 */
if (null) { ... }	/* 特殊変数null */
if ($aaa) { ... }	/* 未定義の変数 */
?>

if, else

if もしくは else if の条件式の比較結果が false の場合、else { 処理 } の処理を実行する。

以下の例では「$i は10以下」が表示される。

<?php
$i = 10;
if ($i > 10) {
	echo '$i は10より大きい';	/* $i が 10より大きい数値なら表示 */
} else {
	echo '$i は10以下';		/* $i が 10以下なら表示 */
}
?>

if, else if, else

元の if もしくは else if の条件式の比較結果が false の場合、else if ( 条件式 ) の条件式の比較が行われる。比較結果が true の場合、else if ( 条件式 ) { 処理 } の処理を実行する。false の場合、処理を実行しない。

if, else if, else 文では、条件式の比較結果が ture になった場合、その後の else if, else は実行されない(無視される)。

else if は elseif と記述することもできる。

以下の例では「$i は5未満」が表示される。else if ($i < 5) が true なので else { } は実行されない。

<?php
$i = 4;
if ($i > 10) {
	echo '$i は10より大きい';	/* $i が 10より大きい数値なら表示 */
} else if ($i < 5) {
	echo '$i は5未満';		/* $i が 5未満なら表示 */
} else {
	echo '$i は10以下';		/* $i が 10以下なら表示 */
}
?>

以下の例では「$i は5未満」が表示される。else if ($i < 5) が true なので else if ($i < 1) { }、else { } は実行されない。

<?php
$i = 0;
if ($i > 10) {
	echo '$i は10より大きい';	/* $i が 10より大きい数値なら表示 */
} else if ($i < 5) {
	echo '$i は5未満';		/* $i が 5未満なら表示 */
} else if ($i < 1) {
	echo '$i は1未満';		/* $i が 1未満なら表示 */
} else {
	echo '$i は10以下';		/* $i が 10以下なら表示 */
}
?>

for

for文は、for (式1; 条件式2; 式3) { 処理 } の書式で記述する。

式1は、ループ開始時に、ループの最初の1回だけ実行される。

ループ開始時に条件式2が比較され、条件式の比較結果が ture になった場合、for (式1; 条件式2; 式3) { 処理 } の処理が実行され、式3が実行される。

条件式の比較結果が false になった場合、ループを抜ける。

以下の例では、ループ開始時に、ループの最初の1回だけ $i = 0 が実行される。

$i < 10 の比較結果が true の場合、echo $i; が実行され、$i++ が実行される。

$i++ で $i はインクリメントされているので、for 文のループ1回毎に、1ずつ加算される。

$i が 0~9 の間、for (式1; 条件式2; 式3) { 処理 } の処理が実行され、10になると $i < 10 は false になるのでループを抜ける。

<?php
for ($i = 0; $i < 10; $i++) {
 	echo $i;
}
?>

switch

switch 文は値に応じて処理を振り分ける。一致した case 節から、最初の break 文まで実行を続ける。

switch 文は以下の書式で記述し、switch ( 値 ) と case "比較したい値" を比較し、true の場合、case 内の処理が実行される。

<?php
switch ( 値 ) {
	case "比較したい値":
		/* 処理 */
		break;
	case "別の値":
		/* 処理 */
		break;
	case "別の別の値":
		/* 処理 */
		break;
	default:
		/* どの case にも一致しない場合の処理 */
		break;
} 
?>

以下の例では white が表示される。

<?php
$color = "white";
switch ($color) {
	case "blue":
		echo "blue";
		break;
	case "yellow":
		echo "yellow";
		break;
	case "white":
		echo "white";
		break;
	default:
		echo "default";
		break;
}
?>

case に付随する文は、空とすることが可能。 この場合、次の case に付随する文に制御が移行する。

<?php
$number = 3;
switch ($number) {
	case 0:
	case 1:
	case 2:
		echo '$number = 2';
		break;
	case 3:
		echo '$number = 3';
		break;
	default:
		echo 'default';
		break;
}
?>

break

break は for、foreach、while、do、do while のループ処理を抜ける。

以下の例では、$i が 5のときに for ループを抜ける。

<?php
for ($i = 0; $i < 10; $i++) {
	if ($i === 5) {
		break;
	}
	echo $i;
}
?>

continue

for、foreach、while、do、do while の、残りのループ中の処理をスキップする。

以下の例では $i が 0~9 の間、for ($i = 0; $i < 10; $i++) { echo $i; } の echo $i が実行されるが、$i が 5のときは continue で残りのループ中の処理をスキップしているので、echo $i は実行されない。

<?php
for ($i = 0; $i < 10; $i++) {
	if ($i === 5) {
		continue;
	}
	echo $i;	/* $i が 5の時は実行されない */
}
?>

while

while 文は、while ( 条件式 ) { } の 条件式の比較結果が true の場合、while ( 条件式 ) { 処理 } の処理を実行しループする。

条件式 true の場合、while 文の処理の中で条件式が false になる処理を記述しないと、無限ループするので注意が必要。

while 文 は、for 文でも同じ処理記述できる。while 文は無限ループのリスクがあるので、for 文を使うことが望ましい。

以下の例では $i < 10 の比較結果が true の場合、while ( 条件式 ) { 処理 } の処理を実行する。

処理の中では、$i++ で $i はインクリメントされているので、while 文のループ1回毎に、1ずつ加算される。$i が 0~9 の間、while ( 条件式 ) { 処理 } の処理が実行され、10になると while ($i < 10) は false になるのでループを抜ける。

<?php
$i = 0;
while ($i < 10) {
	echo $i;
	$i++;
}
?>

おすすめ記事

10日で使えるPHP | 未経験のサルでも分かるPHPの学習サイト 10日で使えるPHP | 未経験のサルでも分かるPHPの学習サイト

文系未経験、サルでも10日でPHPを使えるように内容を構成した独学向け学習サイト。不要な基礎はバッサリ切り捨て必要な基礎を十分に深堀した・・・  続きを見る 

Copyright (C) 2001~2026年 e-elder.jp All Rights Reserved.
運営者情報 ご質問はこちらへお願いします info@e-elder.jp