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 "出错了。"; }