![PHP+MySQL Web应用开发教程](https://wfqqreader-1252317822.image.myqcloud.com/cover/889/33892889/b_33892889.jpg)
3.2 条件控制语句
所谓条件控制语句就是对语句中不同条件的值进行判断,进而根据不同的条件执行不同的语句。在条件控制语句中主要有两个语句:if条件控制语句和switch多分支语句。
3.2.1 if条件控制语句
if条件控制语句是所有流程控制语句中最简单、最常用的一个,根据获取的不同条件判断执行不同的语句。应用范围十分广泛,无论程序大小几乎都会应用到该语句。其语法如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/70_02.jpg?sign=1738821344-WP2rTJwbMFz7DDuSYEoyhax3zmY1IdVe-0-8b0b0795e2b37418ff159cb375996eb2)
参数expr按照布尔求值。如果expr的值为true,将执行statement,如果值为false,则忽略statement。if语句可以无限层地嵌套到其他if语句中去,实现更多条件的执行。
else的功能是当if语句在参数expr的值为false时执行其他语句,即在执行的语句不满足该条件时执行else后大括号中的语句。
【例3-1】 if…else的应用。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/70_03.jpg?sign=1738821344-pm8cMKgMhCxaevGxRNvKpjmbT4ZSWuhb-0-b8ea130d27aa7b112f73f8d681d11a13)
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/71_01.jpg?sign=1738821344-ZncTeiR56Jnj1tquJB6QiLLjMOPiLG48-0-152d0fc93f93ed2722f06a1b55ae1959)
输出结果如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/71_02.jpg?sign=1738821344-MJWXzd52rtPcNLo6faNnWjwrTpZUlEif-0-f725199fd37c7875d3d0e65b416a53a4)
在同时判断多个条件的时候,PHP提供了elseif的语句来扩展需求。elseif语句被放置在if和else语句之间,满足多条件同时判断的需求。
if语句的流程如图3-7、图3-8和图3-9所示。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/71_03.jpg?sign=1738821344-l66HNzaMB3c9nr4GXbK4FpLA8wGmpoNY-0-25b700a8989fecb9088a269478aa6249)
图3-7 if语句流程图
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/71_04.jpg?sign=1738821344-F3CAgvpBFEt7sCYLgjLYuLU8K971d3Fu-0-1991f4d37db93721c13d3ec614031759)
图3-8 if…else语句流程控制图
if语句的流程如图3-9所示。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/71_05.jpg?sign=1738821344-edPznnhz3SwHgZ2CQmNBArKDEbWfCsAX-0-4c7f1b24e6365298e04e8fd41ffe5a25)
图3-9 elseif语句的流程控制图
【例3-2】从文本框输入一个百分制分数,单击“提交”按钮后,输出成绩等级。90分以上记为“A”,80~89分记为“B”,70~79分记为“C”,60~69分记为“D”,60分以下记为“D”。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/72_01.jpg?sign=1738821344-oAQuWfKdCNfimdSYGJLHIUY1F8JzNuIf-0-d8f31d19dd9e054e9f88069684bb26f7)
运行结果为:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/72_02.jpg?sign=1738821344-PHB6sjpdTcntN8q0C10902mRsmpQv6tA-0-6b8566386421405e03ff98e412ce3c01)
3.2.2 switch多分支语句
switch语句和if条件控制语句类似,实现将同一个表达式与很多不同的值比较,获取相同的值,并且执行相同的值对应的语句。其语法如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/72_03.jpg?sign=1738821344-zmewUBhpMPq1miAsKOf0AAjkyAQ99630-0-43d9d0bec84dc2f7854def514faf9906)
参数说明如表3-1所示。
表3-1 switch语句参数介绍
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/73_01.jpg?sign=1738821344-c2TN8Vyt6xtmrN5tmWlzEwzwGN8EXf6c-0-ca952667392cd61e962abe45b826cfbf)
switch语句的流程控制如图3-10所示。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/73_02.jpg?sign=1738821344-x0LjeyEEsoax9cF8RDBAmYtKvJw7vx1s-0-7239b1e616afc58949e36fa79d2d3007)
图3-10 switch语句流程控制图
注:
1)表达式的类型可以是数值型或者字符串型。
2)多个不同的case可以执行同一个语句块。
【例3-3】应用switch语句判断成绩的等级情况。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/73_03.jpg?sign=1738821344-6RP3KLUA6mmTcobsEH899d4U4BJjyOxU-0-879c349620b53e8c82346f2e079b976e)
运行结果为:不及格。
注:if和switch语句可以从使用的效率上来进行区别,也可以从实用性角度去区分。如果从使用的效率上进行区分,在对同一个变量的不同值作条件判断时,使用switch语句的效率相对更高一些,尤其是判断的分支越多越明显。
如果从语句实用性的角度去区分,那switch语句肯定不如if条件语句。if条件语句是实用性最强和应用范围最广的语句。
在程序开发的过程中,if和switch语句的使用应该根据实际的情况而定,不要因为switch语句的效率高就一味地使用,也不要因为if语句常用就不应用switch语句。要根据实际的情况,具体问题具体分析,使用最适合的条件语句。在一般情况下可以使用if条件语句,但是在实现一些多条件的判断中,特别是在实现框架的功能时就应该使用switch语句。