PHP 简明教程

PHP switch 语句

1. PHP switch 语句

switch 语句用于根据不同的条件执行不同的操作。

当需要从多个代码块中选择一个来执行时,请使用 switch 语句。

1.1 switch 的语法

switch (expression) {
  case label1:
    // 代码块
    break;
  case label2:
    // 代码块
    break;
  case label3:
    // 代码块
    break;
  default:
    // 默认代码块
}

它的工作原理如下:

  1. 表达式(expression)仅被计算一次。
  2. 表达式的值会与每个 case 的值进行比较。
  3. 如果找到匹配项,则执行相关的代码块。
  4. break 关键字用于跳出 switch 代码块。
  5. 如果没有找到任何匹配项,则执行 default 默认代码块。

1.2 示例

$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!";
}

2. PHP break 关键字

当 PHP 遇到 break 关键字时,它会跳出 switch 代码块。

这将停止代码的执行,并且不会再去测试后续的其他 case

最后一个代码块不需要加上 break,因为代码执行到那里自然会结束。

警告:如果您在一个非末尾的 case 中省略了 break 语句,并且该 case 匹配成功,那么即使下一个 case 的值不匹配,下一个 case 中的代码也依然会被执行!

2.1 示例

如果我们在 case "red" 中去掉 break 语句会发生什么?

$favcolor 是红色的("red"),所以 case "red" 中的代码块会被执行。但由于没有 break 语句,紧随其后的 case "blue" 代码块也会被强制执行:

$favcolor = "red";

switch ($favcolor) {
  case "red":
    echo "Your favorite color is red!";
  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!";
}

3. PHP default 关键字

default 关键字用于指定在没有任何 case 匹配时要运行的代码:

3.1 示例

如果没有 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";
}

4. 合并 Cases(匹配多个条件)

如果您希望多个 case 能够执行相同的代码块,您可以按照以下方式合并这些 case

4.1 示例

为同一个代码块指定多个 case

$d = 3;

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