php switch 不加 break 会怎么样?

在PHP中,switch语句如果不加break会导致”case穿透”现象。具体表现如下:

当匹配到某个case后,如果没有break语句,代码会继续执行后续所有case中的语句,直到遇到break或switch结束

这种特性有时会被故意利用来实现多个case共享同一段代码的逻辑

示例说明:

switch ($value) {
  case 1:
    echo "这是1";
    // 这里没有break
  case 2:
    echo "这是2";
    break;
  case 3:
    echo "这是3";
    break;
}

当$value=1时,输出会是:
“这是1这是2”

因为匹配到case 1后,没有break阻止,所以继续执行了case 2的代码。

建议:除非有特殊需求,否则每个case后都应该加上break语句以避免意外行为。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

2 × 3 =
Powered by MathCaptcha