PHP 条件文 switch

switch文は、異なる条件に基づいて異なるアクションを実行するために使用されます。

PHPのswitch文

switch文を使用して、実行するコードブロックを選択します。

構文


switch (式) {
  case ラベル1:
    // コードブロック
    break;
  case ラベル2:
    // コードブロック
    break;
  case ラベル3:
    // コードブロック
    break;
  default:
    // コードブロック
}

動作の詳細:

  • 式は1度評価されます。
  • 式の値が各caseの値と比較されます。
  • 一致する場合、関連するコードブロックが実行されます。
  • breakキーワードはswitchブロックから抜けます。
  • 一致するcaseがない場合、defaultのコードブロックが実行されます。

$favcolorが「red」の場合、「Your favorite color is red!」と出力します:


$favcolor = "red";

switch ($favcolor) {
  case "red":
    echo "Your favorite color is red!";
    break;
  case "blue":
    echo "Your favorite color is blue!";
    break;
  case "green":
    echo "Your favorite color is green!";
    break;
  default:
    echo "Your favorite color is neither red, blue, nor green!";
}

breakキーワード

PHPがbreakキーワードに到達すると、switchブロックから抜けます。これにより、それ以降のコードは実行されず、他のcaseもテストされません。

最後のブロックにはbreakが必要ありません。ブロックはそこで終了します。

ヒント

caseごとにbreakステートメントを忘れないようにしましょう。特に最後のcase以外でbreakを省略すると、次のcaseも実行される可能性があります。

defaultキーワード

defaultキーワードは、どのcaseにも一致しない場合に実行するコードを指定します。

どのcaseも一致しない場合に、defaultブロックが実行されます:


$d = 4;

switch ($d) {
  case 6:
    echo "Today is Saturday";
    break;
  case 0:
    echo "Today is Sunday";
    break;
  default:
    echo "Looking forward to the Weekend";
}

defaultのcaseはswitchブロックの最後でなくても機能しますが、推奨されません。

注意

defaultがswitchブロックの最後でない場合、defaultブロックの最後にbreakステートメントを記述することを忘れないでください。

共通のコードブロック

複数のcaseで同じコードブロックを使用したい場合は、以下のようにcaseを指定します:

複数のcaseで同じコードブロックを使用する場合:


$d = 3;

switch ($d) {
  case 1:
  case 2:
  case 3:
  case 4:
  case 5:  
    echo "The weeks feels so long!";
    break;
  case 6:
  case 0:
    echo "Weekends are the best!";
    break;
  default:
    echo "Something went wrong";
}