if、for、foreach等の基本から、switch、break/continueの制御、require/includeによる外部ファイル連携まで詳しく解説。現場品質のサンプルプログラムを掲載。
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 の条件式の比較結果が false の場合、else { 処理 } の処理を実行する。
以下の例では「$i は10以下」が表示される。
<?php
$i = 10;
if ($i > 10) {
echo '$i は10より大きい'; /* $i が 10より大きい数値なら表示 */
} else {
echo '$i は10以下'; /* $i が 10以下なら表示 */
}
?>元の 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 (式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 文は値に応じて処理を振り分ける。一致した 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 は for、foreach、while、do、do while のループ処理を抜ける。
以下の例では、$i が 5のときに for ループを抜ける。
<?php
for ($i = 0; $i < 10; $i++) {
if ($i === 5) {
break;
}
echo $i;
}
?>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 ( 条件式 ) { } の 条件式の比較結果が 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を使えるように内容を構成した独学向け学習サイト。不要な基礎はバッサリ切り捨て必要な基礎を十分に深堀した・・・ 続きを見る |