2.2、Switch分支
目标:掌握switch分支的结构语法,以及能够运用Switch结构实现分支结构解决问题
概念
Switch分支:一种接收颗粒条件的分支结构
- Switch分支:条件是具体值,而不是范围条件
- Switch代码块是写在一起的,使用case分开,而不是{}
- Switch代码块允许执行多个(如果有必要)
- Switch结构
switch(条件变量){
case 值:
满足条件1要执行的代码块
代码执行控制:break
...
default :
不满足所有条件执行的代码块
代码执行控制:break
}
步骤
1、确定目标条件:条件必须是颗粒度的,通常是一个变量(没有比较符号)
2、确定可能出现的结果:一个条件对应一个case指令
3、确定每个case指令下要执行的代码
4、确定每个case指令是否需要结束
- 结束使用break
- 不结束,代码会继续执行下一个case的代码块(代码块共享)
5、确定是否需要不满足条件的代码块:default
- 没有:结束
- 有:确定default的代码块
示例
1、明天天气出太阳,出去走走;天气刮风,去看电影;天气阴天,在家看书;否则睡觉
#假设外部接收条件:条件变量为$weather,值为sun、wind、cloud和其他
switch($weather){
#匹配第一个值:直接取$weather的值即可
case 'sun':
echo '出去走走';
break; #结束:表示switch完结
case 'wind':
echo '去看电影';
break;
case 'cloud':
echo '在家看书';
break;
default: #其他值
echo '睡觉';
break; #最后一个可以没有break
}
/*
执行逻辑
1、switch根据条件进入
2、匹配$weather的值:找到合适的case
2.1:找到:执行
2.1.1:有break:结束
2.1.2:没有break:继续执行后面的case指令
2.2:没有找到,进入default
*/
2、一周7天,1-5天上班,6和7休息(共享代码块)
#确定条件:条件是1-7,每次都是一个具体的值(颗粒度)
$day = 2;
#判定条件
switch($day){
#确定条件及其要执行的代码块
case 1: #$day的值为1,等价于 $day == 1
echo '上班';
#确定是否要结束
break;
case 2: #发现2-5其实是同一件事情,所以可以省去重复执行的代码块
case 3:
case 4:
case 5:
echo '上班';
break;
case 6:
case 7:
echo '休息';
break;
#确定是否需要不满足条件结果
default:
echo '没有这样的日子';
break;
}
/*
执行逻辑
1、switch根据条件进入
2、匹配是否有合适的case,没有进入default,有进入:2进入case 2
3、进入case 2后开始执行代码块:没有
4、看看case 2后没有发现结束语句:break,继续向下执行,进入case 3
5、同理直到进入case 5:执行代码块,发现break,结束switch
*/
总结
1、switch是一种用来实现颗粒条件的分支结构
- 只适合固定值:case 具体值(内部使用 == 比较)
- 不适合进行大小比较:不能case 条件 > 10之类
2、switch的结构如下
switch(条件变量){
case 值1:
代码块;
break;
case 值2:
代码块;
break;
default:
代码块;
break;
}
3、break如果不写,那么可以实现多个case共享一个代码块
4、default可以没有
5、凡是switch能做的分支,if都能做;但是if能做的switch不一定能做
基本常见语言基本语句都一样dd
祝君元宵节快乐,年年吉祥如意多!