
3.2 条件控制语句
所谓条件控制语句就是对语句中不同条件的值进行判断,进而根据不同的条件执行不同的语句。在条件控制语句中主要有两个语句:if条件控制语句和switch多分支语句。
3.2.1 if条件控制语句
if条件控制语句是所有流程控制语句中最简单、最常用的一个,根据获取的不同条件判断执行不同的语句。应用范围十分广泛,无论程序大小几乎都会应用到该语句。其语法如下:

参数expr按照布尔求值。如果expr的值为true,将执行statement,如果值为false,则忽略statement。if语句可以无限层地嵌套到其他if语句中去,实现更多条件的执行。
else的功能是当if语句在参数expr的值为false时执行其他语句,即在执行的语句不满足该条件时执行else后大括号中的语句。
【例3-1】 if…else的应用。


输出结果如下:

在同时判断多个条件的时候,PHP提供了elseif的语句来扩展需求。elseif语句被放置在if和else语句之间,满足多条件同时判断的需求。
if语句的流程如图3-7、图3-8和图3-9所示。

图3-7 if语句流程图

图3-8 if…else语句流程控制图
if语句的流程如图3-9所示。

图3-9 elseif语句的流程控制图
【例3-2】从文本框输入一个百分制分数,单击“提交”按钮后,输出成绩等级。90分以上记为“A”,80~89分记为“B”,70~79分记为“C”,60~69分记为“D”,60分以下记为“D”。

运行结果为:

3.2.2 switch多分支语句
switch语句和if条件控制语句类似,实现将同一个表达式与很多不同的值比较,获取相同的值,并且执行相同的值对应的语句。其语法如下:

参数说明如表3-1所示。
表3-1 switch语句参数介绍

switch语句的流程控制如图3-10所示。

图3-10 switch语句流程控制图
注:
1)表达式的类型可以是数值型或者字符串型。
2)多个不同的case可以执行同一个语句块。
【例3-3】应用switch语句判断成绩的等级情况。

运行结果为:不及格。
注:if和switch语句可以从使用的效率上来进行区别,也可以从实用性角度去区分。如果从使用的效率上进行区分,在对同一个变量的不同值作条件判断时,使用switch语句的效率相对更高一些,尤其是判断的分支越多越明显。
如果从语句实用性的角度去区分,那switch语句肯定不如if条件语句。if条件语句是实用性最强和应用范围最广的语句。
在程序开发的过程中,if和switch语句的使用应该根据实际的情况而定,不要因为switch语句的效率高就一味地使用,也不要因为if语句常用就不应用switch语句。要根据实际的情况,具体问题具体分析,使用最适合的条件语句。在一般情况下可以使用if条件语句,但是在实现一些多条件的判断中,特别是在实现框架的功能时就应该使用switch语句。