【web 开发基础】PHP 的流程控制之多向条件分支结构(switch) -PHP 快速入门 (16)

简介: switch语句和elseif相似,也是一种多向条件分支结构,但if和elseif语句使用布尔表达式或布尔值作为分支条件来进行分支控制;而switch语句则用于测试一个表达式的值,并根据测试结果选择执行相应的分支程序,从而实现分支控制.switch语句由一个控制表达式和多个case标签组成,case标签后紧跟一个代码块,case标签作为这个代码块的标识.switch语句的语法格式如下:

前言

switch语句和elseif相似,也是一种多向条件分支结构,但if和elseif语句使用布尔表达式或布尔值作为分支条件来进行分支控制;而switch语句则用于测试一个表达式的值,并根据测试结果选择执行相应的分支程序,从而实现分支控制.switch语句由一个控制表达式和多个case标签组成,case标签后紧跟一个代码块,case标签作为这个代码块的标识.switch语句的语法格式如下:

<?php//使用switch分支结构, 对小括号中的表达式求值switch(表达式) 
{ //switch 语句必须由花括号开始,且必须由花括号结束,在编程中,圆括号(),方括号[],花括号{}一般是成对出现//下面的分支中,表达式的值匹配到哪个就执行下面相应的语句块case值1:
语句块1;
break; //break用于退出switch语句case值2:
语句块2;
break;
case值3:
语句块3;
break;
  ......
case值n:
语句块n;
break;
default:
语句块n+1;
break;
}

使用switch应注意的事项以及switch和if的区别

这种分支语句的执行是先对switch后面括号中的'表达式'求值,然后依次匹配case标签后的值1,值2,...,值n等值,遇到匹配的值即执行对应的执行体;如果所有case标签后的值与"表达式"的值都不相等,则执行default标签后的代码块。在使用switch语句时应该注意以下几点:

  • (1)和if语句不同的是,switch语句后面的控制表达式的数据类型只能是整型或字符串,不能是boolean类型。通常这个控制表达式是一个变量名称,虽然PHP是弱类型语言,在switch后面控制表达式的变量可以是任意的类型的数据,但是,为了保证匹配执行的准确性,最好只使用整型或字符串中的其中一种类型
  • (2)和if语句不同的是,switch语句后面的花括号是必须要有的。而switch语句中各case标签前后代码块的开始点和结束非常清晰,因此完全没有必要为case后的代码块加括号
  • (3)case语句的个数没有规定,可以无限增加。但case标签和case标签后面的值之间应有一个空格,值后面必须有一个冒号,这是语法的一部分
  • (4)switch匹配完成以后,将依次逐条执行匹配的分支模块中的语句,直到switch结构结束或者遇到break语句才停止执行。所以,如果一条分支语句的后面没有写上break语句,则程序将继续执行下一条分支语句的内容。
  • (5)与if语句中的else类似,switch语句中的default标签直接在后面加上一个冒号,看似没有条件,其实是有条件的,条件就是“表达式”的值不能与前面任何一个case标签后的值相等,这事才处理default分支中的语句。default标签和if中的else子句一样,它不是switch语句中必须的,可以省略。

编程实践

下面的两个例子使用两种不同的方法实现同样的功能,即都是通过date()函数获取服务器端时间格式中的星期值,并将其转换为中文的星期值。只是一个用一系列的 elseif 语句,另一个使用switch语句实现同样的功能。

if...elseif...结构:

<?php$week=date("D");
if($week=='Mon'){
echo'星期一';
}elseif($week=='Tue'){
echo'星期二';
}elseif($week=='Wed'){
echo'星期三';
}elseif($week=='Thu'){
echo'星期四';
}elseif($week=='Fri'){
echo'星期五';
}elseif($week=='Sat'){
echo'星期六';
}elseif($week=='Sun'){
echo'星期日';
}

switch结构:

<?php$w=date("D");
switch($w){
case"Mon": echo'星期一'; break;
case"Tue": echo'星期二'; break;
case"Wed": echo'星期三'; break;
case"Thu": echo'星期四'; break;
case"Fri": echo'星期五'; break;
case"Sat": echo'星期六'; break;
case"Sun": echo'星期日'; break;
}

执行结果:

注:switch相当于if== ,要完全匹配值, 不能用于区间判断

可以看到switch语句和具有同样表达式的一系列的elseif语句相似,但用switch使程序更清晰,可读性更强。两种多路分支结构的使用时机:如果是通过判断一个“表达式的范围”进行分支处理,就要选择使用一系列的elseif语句,比如上一节中的分时问候就是对小时变量进行范围判断而采用的elseif语句,但很多场合下需要把同一个“变量”或表达式与很多不同的值进行比较。并根据它等于哪个值来执行不同的代码,这正是switch语句的用途。在switch语句中条件只求值一次并用来和每个case语句比较;而在elseif语句中条件会再次求值,如果条件比一个简单的比较要复杂的多或者在一个很多次循环中,那么用switch语句可能会快一点。

在使用switch语句时,还可以在匹配多个值时执行同一个语句块,只要将case中的语句设置为空即可,最重要的是不要加break语句,这样就将控制转移到下一个case中的语句。比如:当值1和2或3任意一个匹配上时,都会执行相同的语句块。

<?php$month=date("m"); //获取当前月份switch($month) {  
case1:
case2:
print("冬季");
break;
case3:
case4:
case5:
print("春季");
break;
case6:
case7:
case8:
print("夏季");
break;
case9:
case10:
case11:
print("秋季");
break;
case12:
print("冬季");
break;                                                  
}

执行结果:

目录
相关文章
|
2月前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
73 3
|
2月前
|
自然语言处理 前端开发 JavaScript
php结构
php结构
33 1
|
2月前
|
XML 安全 PHP
PHP与SOAP Web服务开发:基础与进阶教程
本文介绍了PHP与SOAP Web服务的基础和进阶知识,涵盖SOAP的基本概念、PHP中的SoapServer和SoapClient类的使用方法,以及服务端和客户端的开发示例。此外,还探讨了安全性、性能优化等高级主题,帮助开发者掌握更高效的Web服务开发技巧。
|
3月前
|
开发框架 自然语言处理 PHP
PHP在Web开发中的持久魅力与创新实践###
【10月更文挑战第17天】 本文探讨了PHP作为一门老牌却充满活力的编程语言,在现代Web开发中的独特优势和未来趋势。通过分析其简洁性、灵活性、强大生态系统及不断创新的特性,本文旨在揭示PHP为何能持续吸引开发者,并在技术快速迭代的时代保持竞争力。同时,文章也展望了PHP在未来Web开发领域的发展潜力,强调其在技术创新和社区支持下,依然能够引领Web开发的新潮流。 ###
51 9
|
2月前
|
SQL 安全 Go
PHP在Web开发中的安全实践与防范措施###
【10月更文挑战第22天】 本文深入探讨了PHP在Web开发中面临的主要安全挑战,包括SQL注入、XSS攻击、CSRF攻击及文件包含漏洞等,并详细阐述了针对这些风险的有效防范策略。通过具体案例分析,揭示了安全编码的重要性,以及如何结合PHP特性与最佳实践来加固Web应用的安全性。全文旨在为开发者提供实用的安全指南,帮助构建更加安全可靠的PHP Web应用。 ###
57 1
|
2月前
|
关系型数据库 API PHP
PHP在Web开发中的优势与实践###
【10月更文挑战第24天】 PHP是一种流行的服务器端脚本语言,特别适合Web开发。其简单易学、灵活性高和广泛应用的特点,使其成为众多开发者的首选。本文将探讨PHP在Web开发中的主要优势及其实际应用,通过实例展示如何使用PHP构建高效、可靠的Web应用。无论你是初学者还是有经验的开发者,这篇文章都将提供有价值的见解和实用技巧。 ###
60 0
|
3月前
|
安全 编译器 API
探索PHP 8的新特性及其对现代Web开发的影响
探索PHP 8的新特性及其对现代Web开发的影响
26 0
|
PHP
PHP学习之三结构
PHP中的“if…else…”语法,如下: 通过条件判断,若返回值为布尔值TRUE,则执行任务A,若返回值为FALSE,则执行任务B。
938 0
|
2月前
|
前端开发 关系型数据库 MySQL
PHP与MySQL动态网站开发实战指南####
【10月更文挑战第21天】 本文将深入浅出地探讨如何使用PHP与MySQL构建一个动态网站,从环境搭建到项目部署,全程实战演示。无论你是编程新手还是希望巩固Web开发技能的老手,都能在这篇文章中找到实用的技巧和启发。我们将一起探索如何通过PHP处理用户请求,利用MySQL存储数据,并最终呈现动态内容给用户,打造属于自己的在线平台。 ####
87 0
|
1月前
|
存储 关系型数据库 MySQL
PHP与MySQL动态网站开发:从基础到实践####
本文将深入探讨PHP与MySQL的结合使用,展示如何构建一个动态网站。通过一系列实例和代码片段,我们将逐步了解数据库连接、数据操作、用户输入处理及安全防护等关键技术点。无论您是初学者还是有经验的开发者,都能从中获益匪浅。 ####