开发者学堂课程【PHP 基础入门课程(下):Switch 分支】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/710/detail/12614
Switch 分支
内容介绍:
一、目标
二、概念
三、步骤
四、示例
五、小结
一、目标
掌握 switch 分支的结构语法,以及能够运用 Switch 结构实现分支结构解决问题
二、概念
Switch 分支:一种接收颗粒条件的分支结构
颗粒条件:条件里面的值是固定的,可以有多个值但是固定。
Switch 分支:条件是具体值,而不是范围条件
Switch 代码块是写在一起的,使用 case 分开,而不是(),正因为不是(),所以有可能执行多个。
Switch 代码块允许执行多个(如果有必要)
1、Switch 结构
switch(条件变量){
case 值:
满足条件1要执行的代码块
代码执行控制:break
...
default :
不满足所有条件执行的代码块
代码执行控制:break
)
Break 表示跳出这个分支不要向下执行,可以有多个 case,代表多个分支,default 表示什么都不满足然后执行。
三、步骤
1、确定目标条件:条件必须是颗粒度的,通常是一个变量(没有比较符号)可以选择使用 switch,就需要考虑他的值到底有多少
2、确定可能出现的结果:一个条件对应一个 case 指令
3、确定每个 case 指令下要执行的代码
4、确定每个 case 指令是否需要结束
·结束使用 break
·不结束,代码会继续执行下一个 case 的代码块(代码块共享)可以执行多个但是遇见了 break 才会结束。
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,并不是一个一个匹配,是有内部的逻辑去记录 case 找到的值,就会直接找到 case 值。
1):找到:执行
·:有 break:结束
·:没有 break:继续执行后面的 case 指令
2):没有找到,进入 default。没有 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;
Case6:
case 7:
echo '休息';
break:
.确定是否需要不满足条件结果
default:
echo"没有这样的日子';
break;
举例:
<?php
#switch 分支结构
#一周7天,1-5天上班,6和7休息
$day= 2;
switch($day){
case1:
echo'周一,上班综合增";
break;
case 2:
case 3:
case 4:
case 5:
echo'工作日打酱油';
break;
case6:
echo'电影周末';
break;
case 7:
echa'旅游周末';
break;
default:
echo"太好了';
break;
}
运行结果如下图:
如果把$day= 2; 改成$day= 1; 运行结果如下图:
如果把$day= 2; 改成$day= 6; 运行结果如下图:
如果把$day= 2; 改成$day=’hello’; 运行结果如下图:
执行逻辑
(1)switch 根据条件进入
(2)匹配是否有合适的 case,没有进入 defau1t,有进入:2进入 case 2
(3)进入 case 2后开始执行代码块:没有
(4)看看 case 2后没有发现结束语句:break,继续向下执行,进入 case 3
(5)同理直到进入 case 5:执行代码块,发现 break,结束 switch"
五、小结
1、switch 是一种用来实现颗粒条件的分支结构
1、只适合固定值:case 具体值(内部使用==比较)
2、不适合进行大小比较:不能 case 条件>10之类
2、switch 的结构如下
switch(条件变量){
case 值1:
代码块; break;
case 值2:
代码块;
break;
default:
代码块;
}
3、break 如果不写,那么可以实现多个 case 共享一个代码块
4、default 可以没有
5、凡是 switch 能做的分支,if 都能做;但是 i 能做的 switch 不一定能做



