2020.11.30
【PHP基礎】制御命令 ( exit, return, break, continue )
■処理の脱出に関する命令
ここまで様々な制御構文( if, switch, while, for 等 )を学んできましたが、
この制御構文の中で使用する命令や、PHPの処理から脱出する命令など
知っておくと便利な命令について一度詳しく理解しておきましょう。
今回紹介する命令は以下の4つです。
- exit
- return
- break
- continue
■exit
メッセージを出力して、現在のプログラムを終了するときに使用します。
exit と同じ働きをする die というものもあるので併せて覚えておきましょう。
// メッセージを表示する場合は()の中に文字列を入れる exit('終了時のメッセージ'); // 「終了時のメッセージ」と表示してプログラムを終了する // メッセージを表示しない場合は()を省略できる exit;
exit命令は実行された行でプログラムが終了することに注意してください。
// // 例:配列の要素の合計値を求める。数値以外があればプログラム終了。 // ※is_numeric関数は数字形式の文字かどうかを判定する関数です。 // <?php $arr = [100, 200, "xyz", 400]; // 3つ目に数値以外の文字 $total = 0; foreach ($arr as $a) { if (is_numeric($a)) { // $aが数字形式の文字であれば$totalに加える $total += $a; echo $a; } else { // $aが数字形式の文字でない場合 exit("処理を終了します"); // 「処理を終了します」と画面に表示してプログラムを終了する } } echo "合計:{$total}"; // 途中で処理が終了されるためこの行は実行されない ?>
■return
関数の中で呼び出し元に値を返す際に使用する命令です。
まだ関数には詳しく触れていないのでわかりにくいかもしれませんが、
先程のexit命令はプログラムの処理を終了するのに対し、
return命令はプログラム内で呼び出される関数の処理を終了するという認識です。
// 値を返す場合はreturnの後ろにその値を記述する return 100; // 100 という数値を返す return '関数終了'; // 「関数終了」という文字列を返す return true; // 論理値「真(true)」を返す // 値を返さない場合は何も記述しない return;
return命令もexit命令同様、実行された行で関数の処理が終了することに注意してください。
詳しくは関数の記事にて具体的な使用例を紹介しますが、簡単な使用例は以下のとおりです。
// // 例:正の値同士のみ足し算をする関数 // return命令で出力する値を切り替える // <?php function square ($x, $y) { if ($x < 0 || $y < 0) { // 2つの値に負の値があるとき return "負の値が存在します"; // 点数がおかしいときにここで処理が終了する。 } $answer = $x + $y; return $answer; } ?>
■break
switch文のcaseを抜け出す際や反復処理( while, for 等 )から抜け出す際に使用する命令です。
// // 例:配列の要素の合計値を求める。数値以外があればその時点までの結果を表示。 // ※is_numeric関数は数字形式の文字かどうかを判定する関数です。 // <?php $arr = [100, 200, "xyz", 400]; // 3つ目に数値以外の文字 $total = 0; foreach ($arr as $a) { if (is_numeric($a)) { // $aが数字形式の文字であれば$totalに加える $total += $a; } else { // $aが数字形式の文字でない場合 echo "処理を中断します"; // 「処理を中断します」と画面に表示する break; // foreachの繰り返しを途中で抜け出し、その後の処理を継続する } } echo "合計:{$total}"; // 中断するまでに計算した 100 + 200 の答え「300」が表示 ?>
■continue
反復の途中でその回を終了し、反復の先頭に戻して次の回を実行する命令です。
continueは、ループ構造において現在の繰り返しループ の残りの処理をスキップし、
次の繰り返しの最初から実行を続けるために 使用されます。
// // 例:配列の要素の合計値を求める。数値の要素だけを合計して表示。 // ※is_numeric関数は数字形式の文字かどうかを判定する関数です。 // <?php $arr = [100, 200, "xyz", 400]; // 3つ目に数値以外の文字 $total = 0; foreach ($arr as $a) { if (is_numeric($a)) { // $aが数字形式の文字でない場合 $total += $a; echo $a; } else { // $aが数字形式の文字でない場合 echo "処理をスキップします"; // 「処理をスキップします」と画面に表示する continue; // 以下の処理をスキップして次の繰り返し処理を開始する } echo "Hi!"; // continueのときにスキップされる処理 } echo "合計:{$total}"; // 数値形式以外は無視するので100 + 200 + 400 で 700 と表示 ?>