![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=1739612269-PMI0tjlJOhfyrOwhfNAUAJ0UGBq5YPPQ-0-0445c0200fe2961a1e2b561cddc2de23)
参数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=1739612269-5S6DIDPDyCtj0NmjBzYy0GDzbGrUSzP2-0-42822cb4198a576bba6056346f34e2e9)
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/71_01.jpg?sign=1739612269-vbIWBEtEjHHm040mMFMo97htuKxOWHRO-0-2f72324618853de9ed8d21bc0de92340)
输出结果如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/71_02.jpg?sign=1739612269-WYHVJHEz53FFw43TYgEeEhJTZP3zTbSI-0-80e55690e18977544a39cbe034425886)
在同时判断多个条件的时候,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=1739612269-Su4rKHNKvNAu8JrWaXCaHe406tf3XzEo-0-bbed870569bec3bff474d792bbfb7399)
图3-7 if语句流程图
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/71_04.jpg?sign=1739612269-g9PMkOZ6XmwxuLObrs2Mne89bgD30pt6-0-87451344eaf31788d230268d379b3e19)
图3-8 if…else语句流程控制图
if语句的流程如图3-9所示。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/71_05.jpg?sign=1739612269-FWDXW15zEmkqWcYM9m1wiiUCoW8K71yC-0-32995fa89a97e3f841b48f93765ac94e)
图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=1739612269-rqOuhF9vHkKsvPFReFYFKmJHXPBLGSXU-0-71cde47c3015e2c907c870ec897ce334)
运行结果为:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/72_02.jpg?sign=1739612269-sqjlpwVZXTLWWvaRMjPZZ1DsGhx5NVQM-0-35cd7cfc220f2f33b1c8257972f001a5)
3.2.2 switch多分支语句
switch语句和if条件控制语句类似,实现将同一个表达式与很多不同的值比较,获取相同的值,并且执行相同的值对应的语句。其语法如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/72_03.jpg?sign=1739612269-x6ianw2Ynw07FXvfqzjxRnEpDIMHJsx4-0-3b09cc1ae2012820d5afc6929bb15f71)
参数说明如表3-1所示。
表3-1 switch语句参数介绍
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/73_01.jpg?sign=1739612269-FmMZajGWPdGGcz9tLzw6qD68lgwNIytC-0-7df6a1862aecec9b9becf3a375eb54ae)
switch语句的流程控制如图3-10所示。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/73_02.jpg?sign=1739612269-Af67MbDP09FxfhyHitGgxtk6dBQVXDLJ-0-392ce9fdc81fa56e1da408c1aae41688)
图3-10 switch语句流程控制图
注:
1)表达式的类型可以是数值型或者字符串型。
2)多个不同的case可以执行同一个语句块。
【例3-3】应用switch语句判断成绩的等级情况。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/73_03.jpg?sign=1739612269-BGpTvnHIQxInxKm1vYH9JnGw5XtCStRi-0-66891093648b71dd0c9b6ee9eeafddbd)
运行结果为:不及格。
注:if和switch语句可以从使用的效率上来进行区别,也可以从实用性角度去区分。如果从使用的效率上进行区分,在对同一个变量的不同值作条件判断时,使用switch语句的效率相对更高一些,尤其是判断的分支越多越明显。
如果从语句实用性的角度去区分,那switch语句肯定不如if条件语句。if条件语句是实用性最强和应用范围最广的语句。
在程序开发的过程中,if和switch语句的使用应该根据实际的情况而定,不要因为switch语句的效率高就一味地使用,也不要因为if语句常用就不应用switch语句。要根据实际的情况,具体问题具体分析,使用最适合的条件语句。在一般情况下可以使用if条件语句,但是在实现一些多条件的判断中,特别是在实现框架的功能时就应该使用switch语句。