@ PHP

条件分岐

プログラムの構造は「順次」「選択」「反復」の3種に分類できます。

順次(順接、順構造)
プログラムに記述された順に、逐次処理を実行する。
選択
条件によって、処理を分岐する。
反復
一定の条件が満たされている間、処理を繰り返し実行する。

「順次」「選択」「反復」を組み合わせながらプログラムを組み立てていく手法のことを構造化プログラミングと言います。

PHP では、構造化プログラミングのための制御構文(制御構造)が標準で提供されています。

if文 – 単純分岐

if 文は「もし○○ならば□□の処理を実行する」といったように、ある条件(コンディション)によって処理を分岐させ、プログラムの流れを制御する命令文(ステートメント)です。条件には比較演算子や論理演算式を使った条件式を指定します。

分岐処理概念図

format

if ( 条件式 ) {
    // 条件式が TRUE の場合に実行する処理
} else {
    // 条件式が FALSE の場合に実行する処理
}

if_01.php

<?php
$x = 10;
$y = 3;
if (($x == 10) || ($y == 3)) {  
    echo "条件式は TRUE です。";  
} else {
    echo "条件式は FALSE です。";
}
?>

if 文では条件式が true の場合に直後のブロックを、false の場合に else 以降のブロックを実行します。ブロックは 1 組の { }(ブレース)で囲んで表現します。

if文 – 多岐分岐

elseif ブロックを利用することで、「もし○○ならば□□の処理を、それとも●●ならば△△の処理を実行する」という多岐分岐を表現できます。

format

if ( 条件式 1 ) {
    // 条件式 1 が TRUE の場合に実行する処理
} elseif ( 条件式 2 ) {
    // 条件式 1 が FALSE で、条件式 2 が TRUE の場合に実行する処理
} else {
    // 条件式 1、条件式 2 どちらも TRUE ではない場合に実行する処理
}

if_02.php

<?php
$x = 10;
$y = 3;
if (($x == 11) && ($y == 3)) {
    echo "条件式 1 は TRUE です。";
} elseif (($x == 10) && ($y == 5)) {
    echo "条件式 2 は TRUE です。";
} else { 
    echo "条件式 1、条件式 2 は FALSE です。"; 
}
?>

if文の入れ子(ネスト)

if 文の中にif 文を入れる(ネスト)ことができます。

if_03.php

<?php
$x = 10;
$y = 3;

if ($x == 10 || $x == 5) {
    if ($y >1 && $y < 5) {
        echo "条件式はTRUEです。";
    }
}
?>

中カッコを使わないif文

中カッコを使わず、:(コロン)と endif を使った if 文があります。

if_04.php

<?php
$x = 10;
$y = 3;
if (($x == 11) && ($y == 3)) :
    echo "条件式はTRUEです。";
else :
    echo "条件式はFALSEです。";
endif;
?>

条件演算子

if 文を使わないで ? : (三項演算子)を使って記述する方法もあります。

format

条件式 ? TRUE 時の値 : FALSE 時の値

if_05.php

<?php
$x = 10;
$y = 3;
echo (($x == 10) || ($y == 3)) ? "条件式はTRUEです。" : "条件式はFALSEです。";
?>

条件演算子の省略構文

条件演算子には小省略構文があります。

if_05.php

<?php
$message = '';
print $message ?: '空です。';
?>

if_06.php

<?php
//$message = 'こんにちは';
print $message ?? 'ノーコメント';
?>

switch文 – 多岐分岐

switch 文は、複数の case という選択肢の中から、式の値にあうものを選び、その処理を実行します。

式の値が case のどれにもあてはまらないときは default に進みます。

各選択肢の最後には brake 文を記述し、選択した処理のみを実行するようにします。

format

switch (式) {
    case 値1:
        // 「式 = 値1」である場合に実行する処理
        break;
    case 値2:
        // 「式 = 値2」である場合に実行する処理
        break;
    default:
        // 式が値1、2、・・・のいずれでもない場合に実行する処理
        break;
}
    

switch_01.php

<?php
$x = 10;
switch ($x) {
    case 10:
        echo "変数 x は 10 です。";
        break;
    case 20:
        echo "変数 x は 20 です。";
        break;
    default:
        echo "変数 x は 10 でも 20 でもありません。";
        break;
}
?>