logo

额外区块类型 (EBT) - 全新的布局构建器体验❗

额外区块类型 (EBT) - 样式化、可定制的区块类型:幻灯片、标签页、卡片、手风琴等更多类型。内置背景、DOM Box、JavaScript 插件的设置。立即体验布局构建的未来。

演示 EBT 模块 下载 EBT 模块

❗额外段落类型 (EPT) - 全新的 Paragraphs 体验

额外段落类型 (EPT) - 类似的基于 Paragraph 的模块集合。

演示 EPT 模块 滚动

滚动

PHP课程 - 第8-2课 - switch 条件语句

09/10/2025, by Ivan

在上一课中,我们学习了 if 条件语句。
if 语句允许我们检查条件是否为真,并根据检查结果执行相应的操作。


现在假设我们需要执行 10 个不同的检查,并根据结果执行 10 种不同的操作。当然,我们可以使用多个 if 来实现:

<?php
  if($x == 1){
    // 操作
  }
  if($x == 2){
    // 操作
  }
  if($x == 3){
    // 操作 
  }
  if($x == 4){
    // 操作 
  }
  if($x == 5){
    // 操作 
  }
  if($x == 6){
    // 操作 
  }
  if($x == 7){
    // 操作 
  }
  if($x == 8){
     // 操作
  }
  if($x == 9){
    // 操作 
  }
  if($x == 10){
    // 操作
  }
?>

这种写法虽然可以工作,但对于多重条件判断来说并不优雅。
在这种情况下,最好使用 switch 语句。

PHP switch 语句

switch 语句可以让我们在多个可能的条件中检查一个变量的值。我们将上面的例子改写成 switch 形式:

<?php
  switch ($x){
    case 1:
      // 操作   
    break;
    case 2:
      // 操作       
    break;
    case 3:
      // 操作       
    break;
    case 4:
      // 操作       
    break;
    case 5:
      // 操作       
    break;
    case 6:
      // 操作       
    break;
    case 7:
      // 操作       
    break;
    case 8:
      // 操作       
    break;
    case 9:
      // 操作       
    break;
    case 10:
      // 操作       
    break;
    default:   
      // 当以上条件都不符合时执行的操作
  }
?>

如前所述,这两种方式执行效果相同。不同的是,在 switch 语句中,我们可以使用 default,当没有任何一个 case 匹配时,它将被执行。

现在让我们看看 switch 的结构。首先是关键字 switch,其后圆括号内是要检查的表达式。这个表达式可以是数字或字符串。例如:

<?php
  switch ($x){
    case 'Hello':
   
    break;
    case 'Bye':
   
    break;
  }
?>

花括号中包含所有的条件分支(case)及其要执行的操作:

<?php
  switch ($x){
    case 'Hello': // 可能的值
      print $x;   // 操作
    break; // 结束当前 case
    case 2:
      $x++;
    break;
  }
?>

每个 case 后面跟着一个值(字符串用引号,数字不需要),然后是冒号。
接下来写出当该条件成立时要执行的代码。
最后使用 break; 来结束当前分支的执行,否则程序会继续执行下一个 case。
在所有 case 后,我们可以使用 default,当其他条件都不匹配时执行它。

总结:
1. 不要忘记在每个 case 的末尾写上 break;
2. 对于 default 分支,可以省略 break,因为它已经是最后一个。

下面是 switch 的流程图:

Switch 语句流程图

作为示例,我们可以根据天数计算星期几:

<?php
// $D 是从星期一开始的天数
$x = $D % 7;
switch ($x){
  case 1:
    print '星期一';
  break;
  case 2:
    print '星期二';
  break;
  case 3:
    print '星期三';
  break;
  case 4:
    print '星期四';
  break;
  case 5:
    print '星期五';
  break;
  case 6:
    print '星期六';
  break;
  case 7:
    print '星期日';
  break;
}
?>

这样我们就可以通过 switch 语句轻松地根据不同的数值输出相应的星期。