今回は条件式の別パターン(switch文)について書いていきたいと思います。前回のif文はelse ifを使用して複数の条件分岐を行うものでした。今回はswitch文という構文で値ごとに条件分岐を行っていきます。

PHPの条件式(switch文)

3年以上前に更新されました。情報が古い可能性があります。
更新日 : 2018年06月05日

今回は条件式の別パターン(switch文)について書いていきたいと思います。

前回のif文else ifを使用して複数の条件分岐を行うものでした。

今回はswitch文という構文で値ごとに条件分岐を行っていきます。

条件式の書式(switch文)

switch文に関してもPHPの書式は一般的なプログラミング言語とさほど変わりません。

以下で書式を見てみましょう。

switch(検証したい値) {
    case 値その1:
        検証したい値が「値その1」のときの処理
        break;
    case 値その2:
        検証したい値が「値その2」のときの処理
        break;
    case 値その3:
        検証したい値が「値その2」のときの処理
        break;
    default:
        検証したい値が上の値その1〜3に当てはまらない時の処理
}

このように書きます。

丸括弧内の値をcaseの横の値と比較して値が一致した場合にcase~breakまでの処理が実行されます。

また、default構文はなくても構いません。任意で使用できます。

breakには中括弧{}内の処理を中断し飛ばす機能があります。
このbreakはswitch文だけの特別な構文ではありません。

例えばcaseの値その1の処理が実行されたとします。処理の最後にbreakを行わないとその下のcaseの比較やdefaultの処理が無駄に行われることになります。

では具体的に実行可能なコードを見てみましょう。

コード例

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

echo "<br>";

date_default_timezone_set("Asia/Tokyo");
switch (date("w")) {
    case 0:
        echo "今日は日曜日!";
        break;
    case 1:
        echo "今日は月曜日…。";
        break;
    case 2:
        echo "今日は火曜日…。";
        break;
    case 3:
        echo "今日は水曜日…。";
        break;
    case 4:
        echo "今日は木曜日…。";
        break;
    case 5:
        echo "やっと金曜日!";
        break;
    case 6:
        echo "今日は土曜日!";
        break;
}
?>

最初のswitch文は変数$xを検証しています。10の場合、20の場合、それ以外の場合で比較し、当てはまった部分のみ処理されています。

2つ目のswitch文では曜日を検証しています。date("w")とすると、曜日が数字で表されます。これに関しては別の記事で。。。(笑)
実はこちらはPHPを使う理由という記事で使用しているPHPへの命令です。

0を日曜日として始まり、6が土曜で順番になっています。実行すると実行した曜日で出力されるはずです。

このコードの実行結果は以下のようになります。

switch文実行結果
switch文実行結果

実行日が月曜なので月曜の出力です。

まとめ

PHPの条件式を2記事投稿しました。

if文でもswitch文でも条件分岐なのでどちらを利用しても構いません。
比較的if文の方が利用頻度が高いです。複数条件分岐があり、たくさんの条件で処理を分けたい場合にswitch文を利用しましょう。