滚动
PHP课程 - 第8-2课 - switch 条件语句
在上一课中,我们学习了 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 的流程图:

作为示例,我们可以根据天数计算星期几:
<?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 语句轻松地根据不同的数值输出相应的星期。