4.1 条件控制语句
条件控制语句主要有if、if…else、elseif和switch 4种。下面分别来了解和使用。
4.1.1 if语句
视频讲解:光盘\TM\lx\4\01 if语句.mp4
几乎所有的语言(包括PHP)都有if语句,它按照条件选择执行不同的代码片段。PHP的if语句的格式如下:
if(表达式) 语句;
如果表达式的值为真,那么就顺序执行语句;否则,就会跳过该条语句,再往下执行。如果需要执行的语句不止一条,那么可以使用“{ }”,在“{ }”中的语句被称为语句组,其格式如下:
if(表达式){ 语句1; 语句2; … }
if语句的流程控制图如图4.1所示。
图4.1 if语句的流程控制图
【例4.1】本例首先使用rand()函数生成一个随机数$num,然后判断这个随机数是不是偶数,如果是,则输出结果。实例代码如下:(实例位置:光盘\TM\sl\4\1)
<?php
$num=rand(1,31); //使用rand()函数生成一个随机数
if($num % 2==0){ //判断变量$num是否为偶数
echo"\$num=$num"; //如果为偶数,输出表达式和说明文字
echo"<br>$num是偶数。";
}
?>
运行结果如图4.2所示。
图4.2 if语句的执行结果
说明
rand()函数的作用是取得一个随机的整数,该函数的格式如下:
int rand(int mix, int max)
rand()函数返回mix~max之间的一个随机数。如果没有参数,则返回0~RAND_MAX之间的随机整数。
4.1.2 if…else语句
视频讲解:光盘\TM\lx\4\02 if…else语句.mp4
大多时候,总是需要在满足某个条件时执行一条语句,而在不满足该条件时执行其他语句。这时可以使用else语句,该语句的格式如下:
if(表达式){ 语句1; }else{ 语句2; }
该语句的含义为:当表达式的值为真时,执行语句1;如果表达式的值为假,则执行语句2。if…else语句的流程控制图如图4.3所示。
图4.3 if…else语句的流程控制图
【例4.2】本例以例4.1为基础,首先使用rand()函数生成一个随机数$num,然后判断这个随机数是偶数还是奇数,再根据不同结果显示不同的字符串。实例代码如下:(实例位置:光盘\TM\sl\4\2)
<?php $num=rand(1,31); //使用rand()函数生成一个随机数 if($num % 2==0){ //判断变量$num是否为偶数 echo"变量$num是偶数。"; //如果为偶数 }else { echo"变量$num为奇数。"; //如果为奇数 } ?>
结果为:变量17为奇数。
4.1.3 elseif语句
视频讲解:光盘\TM\lx\4\03 elseif语句.mp4
if…else语句只能选择两种结果:要么执行真,要么执行假。但有时会出现两种以上的选择,例如:一个班的考试成绩,如果是90分以上,则为“优秀”;如果是60~90分,则为“良好”;如果低于60分,则为“不及格”。这时可以使用elseif(也可以写作else if)语句来执行,该语句的格式如下:
if(表达式1){ 语句1; }else if(表达式2){ 语句2; }… else{ 语句n; }
elseif语句的流程控制图如图4.4所示。
图4.4 elseif语句的流程控制图
【例4.3】本例通过elseif语句,判断今天是否为这个月的上、中、下旬。实例代码如下:(实例位置:光盘\TM\sl\4\3)
<?php $month=date("n"); //设置月份变量$month $today=date("j"); //设置日期变量$today if($today>=1 and$today<=10){ //判断日期变量是否在1~10之间 echo "今天是".$month."月".$today."日,是本月上旬"; //如果是,说明是上旬 }elseif($today>10 and$today<=20){ //否则判断日期变量是否在11~20之间 echo "今天是".$month."月".$today."日,是本月中旬"; //如果是,说明是中旬 }else{ //如果上面两个判断都不符合要求,则输出默认值 echo "今天是".$month."月".$today."日,是本月下旬"; //说明是本月的下旬 } ?>
结果为:今天是6月10日,是本月上旬
注意
if语句和elseif语句的执行条件是表达式的值为真,而else执行条件是表达式的值为假。这里的表达式的值不等于变量的值。如:
<?php $boo = false; if($boo == false) echo "true"; else echo "false"; ?>
该代码段的执行结果为:true
4.1.4 switch语句
视频讲解:光盘\TM\lx\4\04 switch语句.mp4
虽然elseif语句可以进行多重选择,但使用时十分烦琐。为了避免if语句过于冗长,提高程序的可读性,可以使用switch分支控制语句。switch语句的语法格式如下:
switch(变量或表达式){ case常量表达式1: 语句1; break; case常量表达式2: … case常量表达式n: 语句n; break; default: 语句n+1; }
switch语句根据变量或表达式的值,依次与case中的常量表达式的值相比较,如果不相等,继续查找下一个case;如果相等,就执行对应的语句,直到switch语句结束或遇到break为止。一般来说,switch语句最终都有一个默认值default,如果在前面的case中没有找到相符的条件,则输出默认语句,和else语句类似。
switch语句的流程控制图如图4.5所示。
图4.5 switch语句的流程控制图
【例4.4】本例中应用switch语句设计网站的布局,将网站头、尾文件设置为固定不变的板块,导航条也作为固定板块,而在主显示区中,应用switch语句根据超链接中传递的值不同,显示不同的内容。实例代码如下:(实例位置:光盘\TM\sl\4\4)
<?php switch(isset($_GET['lmbs'])? $_GET['lmbs']:""){ //获取超链接传递的变量 case"最新商品": //判断如果变量的值等于“最新商品” include"new.php"; //则执行该语句 break; //否则跳出循环 case "热门商品": include "jollification.php"; break; case "推荐商品": include "commend.php"; break; case "订单查询": include "order_form.php"; break; default: //判断当该值等于空时,执行下面的语句 include "new.php"; break; } ?> <map name="Map" id="Map"> <area shape="rect" coords="9,92,65,113" href="#" /> <area shape="rect" coords="78,89,131,115" href="index.php? lmbs=<?php echo urlencode("最新商品"); ?>" /> <area shape="rect" coords="145,92,201,114" href="index.php? lmbs=<?php echo urlencode("推荐商品"); ?>" /> <area shape="rect" coords="212,91,268,114" href="index.php? lmbs=<?php echo urlencode("热门商品"); ?>" /> <area shape="rect" coords="474,93,529,113" href="index.php? lmbs=<?php echo urlencode("订单查询"); ?>" /> </map>
运行结果如图4.6所示。
图4.6 switch多重判断语句
注意
在执行switch语句时,即使遇到符合要求的case语句段,也会继续往下执行,直到语句结束。为了避免这种浪费时间和资源的行为,一定要在每个case语句段后加上break语句。这里break语句的意思是跳出当前循环,在4.3.1节中将详细介绍break语句。