ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
语法: ``` switch( 一个变量数据或表达式结果$v1 ) { case 值1: //如果$v1 等于 这个“值1”,就执行本分支 分支语句1; break; //表示跳出该分支,也就是跳出switch语句。 case 值2: //如果$v1 等于 这个“值2”,就执行本分支 分支语句2; break; 。。。。。。 //可以更多的分支 default: 默认分支; //前面都不满足的时候,就执行这里,default分支也可以不写 } ``` 说明: 1,上述“值1,值2,。。。”可以是各种标量类型,也可以是表达式——因为最终它也是一个值。 2,用于进行测试的数据变量$v1跟后续的各个值,只能进行“相等比较”(==)。 3,从上述第2条角度来说,其实际上不如if灵活。 注意: 当某个分支满足条件并执行该分支后,如果该分支中没有break语句,此时,程序的流程会“直接进入”后一个分支继续执行,直到碰到break才会结束switch。 流程图: ![](https://img.kancloud.cn/4d/77/4d77adc8139c79111ff851a8d80be486_553x499.png) 示例: 给出任意年份和月份,输出该月的天数。 代码示例如下: ``` $year = 2008; $month = 22; switch( $month ) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: echo "{$year}年{$month}月的天数为31天"; break; case 4: case 6: case 9: case 11: echo "{$year}年{$month}月的天数为30天"; break; case 2: //如果是闰年 if( $year % 4 == 0 && $year % 100 != 0 || $year % 400 == 0) { echo "{$year}年{$month}月的天数为29天"; } else { echo "{$year}年{$month}月的天数为28天"; } break; default: echo "没有该月份"; } ```