Switch 分支|学习笔记

简介: 快速学习 Switch 分支

开发者学堂课程【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;

}

运行结果如下图:

image.png

如果把$day= 2; 改成$day= 1; 运行结果如下图:

image.png

如果把$day= 2; 改成$day= 6; 运行结果如下图:

image.png

如果把$day= 2; 改成$day=’hello’; 运行结果如下图:

image.png

执行逻辑

(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 不一定能做

相关文章
|
4月前
|
边缘计算 关系型数据库 分布式数据库
PolarDB Supabase Edge Functions - 让函数,随时可用
PolarDB Supabase Edge Functions 是现代全栈开发的无服务器引擎,基于 Deno 运行时构建,支持在全球边缘节点部署自定义代码,实现低延迟、高可用的 API 与事件处理。它提供 CLI 和可视化 Studio 两种开发方式,打造高效开发闭环。相比开源版 Supabase,PolarDB Supabase 在公有云环境中实现了完整功能闭环,兼顾企业级控制力与便捷开发体验。
PolarDB Supabase Edge Functions - 让函数,随时可用
|
4月前
|
NoSQL 前端开发 JavaScript
用PHP实现持续监听Redis订阅并将消息推送至前端的技术
通过上述步骤,你可以构建一个服务器端PHP脚本持续监听Redis订阅,并利用WebSocket服务器将消息实时推送到前端的流程。这种机制适用于聊天应用程序、实时通知系统以及任何需要即时数据更新的场景。
159 0
|
6月前
|
数据安全/隐私保护 Windows
电脑文件夹加密全攻略:Anvi Folder Locker 工具详解(附下载),一键实现锁定、只读、隐藏三重保护
Anvi Folder Locker是由Anvsoft Corporation开发的免费文件夹和文件加密工具,适用于Windows系统。它提供多种保护方式,如隐藏、密码保护、锁定和只读等,确保敏感数据安全。软件功能强大,集成在Windows资源管理器中,支持24/7免费技术支持。用户可自定义权限,防止文件被修改、复制或删除。初次使用需设置主密码,安装后即可快速保护文件夹。
2717 2
|
6月前
|
人工智能 运维 安全
F5推出AI网关,赋能企业化解大模型应用风险
F5推出AI网关,赋能企业化解大模型应用风险
209 5
|
消息中间件 NoSQL Java
设计了简单高效的弹幕系统!老板直接加薪
先赞后看,南哥助你Java进阶一大半系统最早起源于日本,流行于视频网站。我们认识的初音未来(Hatsune Miku)就是在niconico平台上爆红的!!我是南哥,一个Java学习与进阶的领路人,相信对你通关面试、拿下Offer进入心心念念的公司有所帮助。
269 3
设计了简单高效的弹幕系统!老板直接加薪
|
数据安全/隐私保护
OAuth2.0实战案例
OAuth2.0实战案例
329 0
OAuth2.0实战案例
|
存储 运维 安全
|
8月前
|
人工智能 API 语音技术
6.5K star!AI视频翻译配音神器,一键生成多平台适配内容,专业级本地化方案来袭!
KrillinAI 是一款基于 AI 大模型的视频翻译与配音工具,支持 12 种输入语言和 101 种输出语种,提供专业级翻译质量。其核心功能包括跨语言智能转换、全流程自动化处理及多项黑科技如语音克隆、术语替换等。技术架构涵盖 WhisperKit、OpenAI API 和 FFmpeg 等组件,实现从视频输入到多平台输出的一站式服务。项目已开源,详情见 GitHub 地址:https://github.com/krillinai/KrillinAI。
513 1
|
数据库
电商购物系统首页的商品分类
电商购物系统首页的商品分类
|
缓存 安全 Java
三万字长文Java面试题——基础篇(注:该篇博客将会一直维护 最新维护时间:2024年9月18日)
本文是一篇全面的Java面试题指南,涵盖了Java基础、数据类型、面向对象、异常处理、IO流、反射、代理模式、泛型、枚举、Lambda表达式、Stream流等多个方面的知识点,并提供了详细的解析和代码示例。
322 1
三万字长文Java面试题——基础篇(注:该篇博客将会一直维护 最新维护时间:2024年9月18日)