当前位置: 首页 > news >正文

「PHP系列」If...Else语句/switch语句

文章目录

  • 一、If...Else语句
    • 1. 基本语法
    • 2. 带有 elseif 的语法
    • 3. 示例
      • 示例 1:基本 if...else 结构
      • 示例 2:使用 elseif
      • 示例 3:嵌套 if...else 结构
    • 4. 注意事项
  • 二、switch语句
    • 1. 基本语法
    • 2. 示例
      • 示例 1:基本 switch 结构
      • 示例 2:没有 break 的穿透现象
      • 示例 3:使用 switch 语句处理范围
    • 3. 注意事项
  • 三、相关链接

一、If…Else语句

PHP 中的 if...else 语句是用于根据条件执行不同代码块的强大工具。这种结构允许你基于某个条件(通常是布尔表达式)的结果来决定执行哪一部分代码。下面是对 if...else 语句的详细解释以及一些示例。

1. 基本语法

if (condition) {// 当 condition 为真时执行的代码块
} else {// 当 condition 为假时执行的代码块
}

2. 带有 elseif 的语法

if (condition1) {// 当 condition1 为真时执行的代码块
} elseif (condition2) {// 当 condition1 为假,但 condition2 为真时执行的代码块
} else {// 当 condition1 和 condition2 都为假时执行的代码块
}

3. 示例

示例 1:基本 if…else 结构

$number = 10;if ($number > 5) {echo "数字大于5";
} else {echo "数字小于或等于5";
}

在这个例子中,如果 $number 大于 5,将输出 “数字大于5”,否则输出 “数字小于或等于5”。

示例 2:使用 elseif

$day = "Wednesday";if ($day == "Monday") {echo "今天是星期一";
} elseif ($day == "Tuesday") {echo "今天是星期二";
} elseif ($day == "Wednesday") {echo "今天是星期三";
} else {echo "今天是其他日子";
}

在这个例子中,我们根据 $day 变量的值输出不同的星期几。如果 $day 是 “Wednesday”,将输出 “今天是星期三”。

示例 3:嵌套 if…else 结构

$age = 25;
$isStudent = true;if ($age >= 18) {echo "你已经是成年人了。";if ($isStudent) {echo "你还是一个学生。";} else {echo "你已经不是学生了。";}
} else {echo "你还没有成年。";
}

在这个例子中,我们首先检查 $age 是否大于等于 18。如果是,我们输出 “你已经是成年人了。”,然后进一步检查 $isStudent 是否为真。根据 $isStudent 的值,我们输出相应的信息。

4. 注意事项

  • 条件表达式 (condition) 必须返回布尔值 truefalse
  • 如果条件表达式的结果不是布尔值,PHP 会尝试将其转换为布尔值。例如,非零数字、非空字符串和非 null 对象通常被视为 true,而零、空字符串和 null 被视为 false
  • elseifelse if 在 PHP 中是等价的,但为了一致性和可读性,通常建议使用 elseif
  • 你可以根据需要嵌套多个 if...else 结构,但过度嵌套会使代码难以理解和维护。尽量保持代码结构清晰和简洁。

二、switch语句

在 PHP 中,switch 语句用于根据表达式的值执行不同的代码块。它提供了一种更清晰、更简洁的方式来处理多个条件。switch 语句会将表达式的值与每个 case 标签的值进行比较,如果匹配成功,则执行相应的代码块。

1. 基本语法

switch (expression) {case value1:// 当 expression 等于 value1 时执行的代码块break;case value2:// 当 expression 等于 value2 时执行的代码块break;default:// 当 expression 不等于任何 case 值时执行的代码块
}

switch 语句中,break 关键字用于终止当前 case 的执行,防止代码继续执行下一个 case。如果省略了 break,则会发生“穿透”(fall-through)现象,即执行完当前 case 的代码后,会继续执行下一个 case 的代码,直到遇到 breakswitch 语句结束。

2. 示例

示例 1:基本 switch 结构

$day = "Monday";switch ($day) {case "Monday":echo "今天是星期一";break;case "Tuesday":echo "今天是星期二";break;case "Wednesday":echo "今天是星期三";break;default:echo "今天是其他日子";
}

在这个例子中,根据 $day 变量的值,输出不同的星期几。

示例 2:没有 break 的穿透现象

$number = 2;switch ($number) {case 1:echo "数字是 1";// 注意:这里故意省略了 breakcase 2:echo "数字是 2";break;case 3:echo "数字是 3";break;default:echo "数字不是 1、2 或 3";
}

在这个例子中,当 $number 等于 2 时,由于第一个 case 1 后面没有 break,所以不仅会输出 “数字是 2”,还会输出 “数字是 1”。

示例 3:使用 switch 语句处理范围

虽然 switch 语句通常用于处理离散的值,但你也可以通过一些技巧来处理范围。例如,使用多个 case 语句来表示范围:

$score = 85;switch (true) {case $score >= 90:echo "优秀";break;case $score >= 80:echo "良好";break;case $score >= 70:echo "中等";break;case $score >= 60:echo "及格";break;default:echo "不及格";
}

在这个例子中,我们使用了 switch (true),并利用 case 后面的表达式来判断分数范围。注意,由于每个 case 后面没有 break,代码会穿透到第一个匹配的条件为止。这实际上是一种模拟 switch 语句处理范围的方法。

3. 注意事项

  • switch 语句中的 expression 必须是一个表达式,它返回一个可以与 case 标签进行比较的值。
  • case 标签后面的值可以是任何数据类型,但 expressioncase 标签的数据类型必须能够进行比较。
  • 如果没有与 expression 相匹配的 case 标签,并且没有 default 语句,则 switch 语句不会执行任何操作。
  • 虽然可以通过穿透现象来处理多个 case,但这通常不是最佳实践,因为它可能导致代码难以理解和维护。使用 break 可以避免这种情况。

通过使用 switch 语句,你可以更清晰地组织代码,并根据不同的条件执行相应的操作。

三、相关链接

  1. php官网
  2. php_Github
  3. PHP实现Token
  4. 「PHP系列」PHP简介与起步
  5. 「PHP系列」PHP语法介绍
  6. 「PHP系列」PHP变量
  7. 「PHP系列」PHP echo/print语句、数据类型详解
  8. 「PHP系列」PHP 常量/字符串、类型比较
  9. 「PHP系列」PHP 运算符详解

相关文章:

「PHP系列」If...Else语句/switch语句

文章目录 一、If...Else语句1. 基本语法2. 带有 elseif 的语法3. 示例示例 1:基本 if...else 结构示例 2:使用 elseif示例 3:嵌套 if...else 结构 4. 注意事项 二、switch语句1. 基本语法2. 示例示例 1:基本 switch 结构示例 2&am…...

Ubuntu部署BOA服务器

BOA服务器概述 BOA是一款非常小巧的Web服务器,源代码开放、性能优秀、支持CGI通用网关接口技术,特别适合用在嵌入式系统中。 BOA服务器主要功能是在互联嵌入式设备之间进行信息交互,达到通用网络对嵌入式设备进行监控,并将反馈信…...

安卓Glide加载失败时点击按钮重新加载图片

需求 假设此时已经用load指定一个url: String,又用into指定了一个img: ImageView开始加载,但是网络突然中断,导致图片加载失败。在这种情况下,想要通过点击一个Button重新加载。 Glide.with(context).load(url).placeholder(loa…...

linux下python服务定时(自)启动

AI应用开发相关目录 本专栏包括AI应用开发相关内容分享,包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧 适用于具备一定算法及Python使用基础的人群 AI应用开发流程概…...

awk命令进阶操作(二)

awk模块 awk模块awk的BEGIN模块和END模块BEGIN模块BEGIN 常见错误END模块END模块 常见错误 案例计算1~100的累加和统计系统中有多少用户的shell类型是/bin/bash awk模块 awk的BEGIN模块和END模块 格式 awk BEGIN{}{}END{} 文件名BEGIN模块 用于定义一个动作,用{…...

【洛谷 P8695】[蓝桥杯 2019 国 AC] 轨道炮 题解(映射+模拟+暴力枚举+桶排序)

[蓝桥杯 2019 国 AC] 轨道炮 题目描述 小明在玩一款战争游戏。地图上一共有 N N N 个敌方单位,可以看作 2D 平面上的点。其中第 i i i 个单位在 0 0 0 时刻的位置是 ( X i , Y i ) (X_i, Y_i) (Xi​,Yi​),方向是 D i D_i Di​ (上下左右之一, 用…...

高阶DS---AVL树详解(每步配图)

目录 前言: AVL树的概念: AVL树节点的定义: AVL树的插入(重点) AVL树的旋转: (1)新节点插入较高左子树的左侧---右单旋 (2)新节点插入较高右子树的右侧---左单旋 …...

c++前言

目录 1. 什么是 C 2. C 发展史 3. C 的重要性 4. 如何学习 C 5. 关于本门课程 1. 什么是C C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的 程序,需要高度的抽象和建模时, C 语言则不合适…...

2024年泰迪杯数据挖掘B题详细思路代码文章教程

目前b题已全部更新包含详细的代码模型和文章,本文也给出了结果展示和使用模型说明。 同时文章最下方包含详细的视频教学获取方式,手把手保姆级,模型高精度,结果有保障! 分析: 本题待解决问题 目标&#…...

练习 21 Web [GXYCTF2019]BabySQli

SQL联合查询,注意有源码看源码,Base64以及32的区别,MD5碰撞 打开后有登录框,先随意登录尝试 只有输入admin才是返回wrong pass! 其他返回wrong user 所以用户名字段一定要输入admin 养成好习惯,先查看源码…...

【并发编程】CountDownLatch

📝个人主页:五敷有你 🔥系列专栏:并发编程 ⛺️稳中求进,晒太阳 CountDownLatch 概念 CountDownLatch可以使一个获多个线程等待其他线程各自执行完毕后再执行。 CountDownLatch 定义了一个计数器,…...

2024-HW --->SSRF

这不是马上准备就要护网了嘛,如火如荼的报名ing!!!那么小编就来查缺补漏一下以前的web漏洞,也顺便去收录一波poc!!!! 今天讲的主人公呢就是SSRF,以前学的时候…...

该主机与 Cloudera Manager Server 失去联系的时间过长。 该主机未与 Host Monitor 建立联系

该主机与 Cloudera Manager Server 失去联系的时间过长。 该主机未与 Host Monitor 建立联系 这个去集群主机cm界面上看会出现这个错误 排查思路: 一般比较常见的原因可能是出问题的主机和集群主节点的时间对应不上了。还有就是cm agent服务出现问题了 去该主机的…...

【BUG】No module named ‘dnf‘

报错内容: 类型一 # git clone https://github.com/pytorch/vision.git Cloning into vision... /usr/libexec/git-core/git-remote-https: symbol lookup error: /usr/lib64/libldap.so.2: undefined symbol: EVP_md2, version OPENSSL_1_1_0类型二 # yum reins…...

Ubuntu pycharm配置Conda环境

参考博客:https://blog.csdn.net/qq_40726937/article/details/105323965 https://juejin.cn/post/7229543139950051388 Ubuntu20.04中搭建虚拟环境并且用pycharm调用Ubuntu中的虚拟环境。_ubuntu pycharm的虚拟环境选哪个-CSDN博客...

工作体验记录

文章目录 如何提高说话能力?如何提高行动力?如何完成一个任务产出成果?如何寻找突破点提高解决问题的效率?如何成为技术领导?参考资料 如何提高说话能力? 三思而后说,想清楚问题描述,抓住重点…...

YOLO火灾烟雾检测数据集:20000多张,yolo标注完整

YOLO火灾烟雾检测数据集:一共20859张图像,yolo标注完整,部分图像应用增强 适用于CV项目,毕设,科研,实验等 需要此数据集或其他任何数据集请私信...

基于Spring Boot的餐厅点餐系统

基于Spring Boot的餐厅点餐系统 开发语言:Java框架:springbootJDK版本:JDK1.8数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9 部分系统展示 管理员登录界面 用户注册登录界面 …...

tkinter控件教程使用说明(三)

这篇tkinter控件使用教程是最后一 一、TreeView 属性/事件描述代码实例columns列名,用于设置树形视图的列tree["columns"] ("姓名", "年龄", "性别")column列的属性,包括列名、宽度等tree.column("姓名…...

Electron 打包自定义NSIS脚本为安装向导增加自定义页面增加输入框

Electron 打包工具有很多,如Electron-build、 Electron Forge 等,这里使用Electron-build,而Electron-build使用了nsis组件来创建安装向导,默认情况nsis安装向导不能自定义安装向导界面,但是nsis提供了nsis脚本可以扩展…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

深度学习水论文:mamba+图像增强

🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...