English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP基本チュートリアル

PHP上級チュートリアル

PHP & MySQL

PHPリファレンスマニュアル

PHP Switch…Case文

このチュートリアルでは、switchを使用する方法を学びます。-case文を使用してPHP内で異なる値を持つ表現をテストまたは評価します。

PHP If…Else vs Switch…Case

switch-case文はif-elseif-else文の代替方法、ほぼ同じ操作を実行します。switch-case文は一連の値をテストする変数に対して、一致する項を見つけ次第、その項に関連するコードブロックを実行します。

switch(n){
    case label1:
        // nがlabelと一致する場合に実行するコード1
        break;
    case label2:
        // nがlabelと一致する場合に実行するコード2
        break;
    ...
    default:
        // nがすべてのタグに一致しない場合に実行するコード
}

以下の例を見てください。この例では、毎日異なるメッセージが表示されます。

<?php
$today = date("D");
switch($today){
    case "Mon":
        echo "今日は月曜日です。あなたの家を掃除してください。";
        break;
    case "Tue":
        echo "今日は火曜日です。食料を買い求めてください。";
        break;
    case "Wed":
        echo "今日は水曜日です。医者に診察してください。";
        break;
    case "Thu":
        echo "今日は木曜日です。あなたの車を修理してください。";
        break;
    case "Fri":
        echo "今日は金曜日です。今夜パーティーを開いてください。";
        break;
    case "Sat":
        echo "今日は土曜日です。映画を見る時間です。";
        break;
    case "Sun":
        echo "今日は日曜日です。休憩してください。";
        break;
    default:
        echo "今日は情報が利用できません。";
        break;
}
?>
テストして‹/›

switch-case文とif-elseif-else文の重要な違いは以下の通りです。switch文は行ごとに実行します(つまり各文ごとに)、PHPが条件式がtrueのcase文を見つけたら、そのcase文に関連するコードを実行するだけでなく、その後のすべてのcase文も実行し、その文が終わるまで続きます。switchのブロックは自動的に切り替わります。

このような状況を防ぐために、各caseブロックの最後にbreak文を追加してください。break文はPHPが最初の実際のcaseに関連するコードを実行したら、switchから脱出する指示をします。-case文脈のブロック。