在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语句以避免意外行为。