PHP switch 语句
switch 语句用于基于不同条件执行不同的动作。
PHP switch 语句
使用 switch 语句来选择要执行的多个代码块之一。
语法
switch (表达式) {
case 标签 1:
// 代码块;
break;
case 标签 2:
// 代码块;
break;
case 标签 3:
// 代码块;
break;
default:
// 代码块;
}
这是它的工作原理:
- 表达式只计算一次
- 将表达式的值与每个 case 的值进行比较
- 如果找到匹配项,则执行相关联的代码块
break关键字会跳出 switch 块- 如果没有匹配项,则执行
default代码块
实例
$favcolor = "red";
switch ($favcolor) {
case "red":
echo "你最喜欢的颜色是红色!";
break;
case "blue":
echo "你最喜欢的颜色是蓝色!";
break;
case "green":
echo "你最喜欢的颜色是绿色!";
break;
default:
echo "你最喜欢的颜色既不是红色、蓝色,也不是绿色!";
}
break 关键字
当 PHP 遇到 break 关键字时,它会跳出 switch 块。
这将停止执行更多代码,并且不再测试更多 case。
最后一个块不需要 break,因为该块无论如何都会结束。
警告:如果你在不是最后一个的 case 中省略了 break 语句,并且该 case 得到了匹配,那么即使评估结果与 case 不匹配,下一个 case 也将被执行!
实例
如果我们从 case "red" 中移除 break 语句会发生什么?
$favcolor 是红色,所以执行了 case "red" 的代码块,但由于它没有 break 语句,因此也会执行 case "blue" 的代码块:
$favcolor = "red";
switch ($favcolor) {
case "red":
echo "你最喜欢的颜色是红色!";
case "blue":
echo "你最喜欢的颜色是蓝色!";
break;
case "green":
echo "你最喜欢的颜色是绿色!";
break;
default:
echo "你最喜欢的颜色既不是红色、蓝色,也不是绿色!";
}
default 关键字
default 关键字指定了在没有 case 匹配时要运行的代码:
实例
如果没有 case 得到匹配,则执行 default 块:
$d = 4;
switch ($d) {
case 6:
echo "今天是星期六";
break;
case 0:
echo "今天是星期天";
break;
default:
echo "期待周末";
}
default case 不必是 switch 块中的最后一个 case:
实例
允许将 default 块放在 switch 块的末尾之外的位置,但不建议这样做。
$d = 4;
switch ($d) {
default:
echo "期待周末";
break;
case 6:
echo "今天是星期六";
break;
case 0:
echo "今天是星期天";
}
注意:如果 default 不是 switch 块中的最后一个块,请记得用 break 语句结束 default 块。
公共代码块
如果你想让多个 case 使用相同的代码块,你可以这样指定 case:
实例
每个代码块有多个 case:
$d = 3;
switch ($d) {
case 1:
case 2:
case 3:
case 4:
case 5:
echo "这周感觉好长!";
break;
case 6:
case 0:
echo "周末最棒了!";
break;
default:
echo "出错了。";
}