PHP从入门到精通(第4版)(软件开发视频大讲堂)
上QQ阅读APP看书,第一时间看更新

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语句。