官术网_书友最值得收藏!

4.1 條件控制語句

條件控制語句主要有if、if…else、elseif和switch 4種。下面分別來了解和使用。

4.1.1 if語句

視頻講解:光盤\TM\lx\4\01 if語句.mp4

幾乎所有的語言(包括PHP)都有if語句,它按照條件選擇執(zhí)行不同的代碼片段。PHP的if語句的格式如下:

        if(表達式)
            語句;

如果表達式的值為真,那么就順序執(zhí)行語句;否則,就會跳過該條語句,再往下執(zhí)行。如果需要執(zhí)行的語句不止一條,那么可以使用“{ }”,在“{ }”中的語句被稱為語句組,其格式如下:

        if(表達式){
            語句1;
            語句2;
            …
        }

if語句的流程控制圖如圖4.1所示。

圖4.1 if語句的流程控制圖

【例4.1】本例首先使用rand()函數(shù)生成一個隨機數(shù)$num,然后判斷這個隨機數(shù)是不是偶數(shù),如果是,則輸出結果。實例代碼如下:(實例位置:光盤\TM\sl\4\1)

        <?php
            $num=rand(1,31);                     //使用rand()函數(shù)生成一個隨機數(shù)
            if($num % 2==0){                      //判斷變量$num是否為偶數(shù)
                echo"\$num=$num";                 //如果為偶數(shù),輸出表達式和說明文字
                echo"<br>$num是偶數(shù)。";
            }
        ?>

運行結果如圖4.2所示。

圖4.2 if語句的執(zhí)行結果

說明

rand()函數(shù)的作用是取得一個隨機的整數(shù),該函數(shù)的格式如下:

int rand(int mix, int max)

rand()函數(shù)返回mix~max之間的一個隨機數(shù)。如果沒有參數(shù),則返回0~RAND_MAX之間的隨機整數(shù)。

4.1.2 if…else語句

視頻講解:光盤\TM\lx\4\02 if…else語句.mp4

大多時候,總是需要在滿足某個條件時執(zhí)行一條語句,而在不滿足該條件時執(zhí)行其他語句。這時可以使用else語句,該語句的格式如下:

        if(表達式){
            語句1;
        }else{
            語句2;
        }

該語句的含義為:當表達式的值為真時,執(zhí)行語句1;如果表達式的值為假,則執(zhí)行語句2。if…else語句的流程控制圖如圖4.3所示。

圖4.3 if…else語句的流程控制圖

【例4.2】本例以例4.1為基礎,首先使用rand()函數(shù)生成一個隨機數(shù)$num,然后判斷這個隨機數(shù)是偶數(shù)還是奇數(shù),再根據(jù)不同結果顯示不同的字符串。實例代碼如下:(實例位置:光盤\TM\sl\4\2)

        <?php
            $num=rand(1,31);                      //使用rand()函數(shù)生成一個隨機數(shù)
            if($num % 2==0){                      //判斷變量$num是否為偶數(shù)
                echo"變量$num是偶數(shù)。";           //如果為偶數(shù)
            }else {
                echo"變量$num為奇數(shù)。";           //如果為奇數(shù)
            }
        ?>

結果為:變量17為奇數(shù)。

4.1.3 elseif語句

視頻講解:光盤\TM\lx\4\03 elseif語句.mp4

if…else語句只能選擇兩種結果:要么執(zhí)行真,要么執(zhí)行假。但有時會出現(xiàn)兩種以上的選擇,例如:一個班的考試成績,如果是90分以上,則為“優(yōu)秀”;如果是60~90分,則為“良好”;如果低于60分,則為“不及格”。這時可以使用elseif(也可以寫作else if)語句來執(zhí)行,該語句的格式如下:

        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語句的執(zhí)行條件是表達式的值為真,而else執(zhí)行條件是表達式的值為假。這里的表達式的值不等于變量的值。如:

        <?php
          $boo = false;
          if($boo == false)
              echo "true";
          else
              echo "false";
        ?>

該代碼段的執(zhí)行結果為: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語句根據(jù)變量或表達式的值,依次與case中的常量表達式的值相比較,如果不相等,繼續(xù)查找下一個case;如果相等,就執(zhí)行對應的語句,直到switch語句結束或遇到break為止。一般來說,switch語句最終都有一個默認值default,如果在前面的case中沒有找到相符的條件,則輸出默認語句,和else語句類似。

switch語句的流程控制圖如圖4.5所示。

圖4.5 switch語句的流程控制圖

【例4.4】本例中應用switch語句設計網(wǎng)站的布局,將網(wǎng)站頭、尾文件設置為固定不變的板塊,導航條也作為固定板塊,而在主顯示區(qū)中,應用switch語句根據(jù)超鏈接中傳遞的值不同,顯示不同的內(nèi)容。實例代碼如下:(實例位置:光盤\TM\sl\4\4)

        <?php
            switch(isset($_GET['lmbs'])? $_GET['lmbs']:""){         //獲取超鏈接傳遞的變量
                case"最新商品":                                     //判斷如果變量的值等于“最新商品”
                      include"new.php";                             //則執(zhí)行該語句
                      break;                                        //否則跳出循環(huán)
                case "熱門商品":
                      include "jollification.php";
                      break;
                case "推薦商品":
                      include "commend.php";
                      break;
                case "訂單查詢":
                      include "order_form.php";
                      break;
                default:                                            //判斷當該值等于空時,執(zhí)行下面的語句
                      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多重判斷語句

注意

在執(zhí)行switch語句時,即使遇到符合要求的case語句段,也會繼續(xù)往下執(zhí)行,直到語句結束。為了避免這種浪費時間和資源的行為,一定要在每個case語句段后加上break語句。這里break語句的意思是跳出當前循環(huán),在4.3.1節(jié)中將詳細介紹break語句。

主站蜘蛛池模板: 洛隆县| 竹溪县| 平乐县| 芦溪县| 沈丘县| 丹东市| 北海市| 蒲城县| 静宁县| 改则县| 抚顺市| 南靖县| 京山县| 电白县| 锦屏县| 云南省| 肥西县| 遂昌县| 太保市| 普洱| 朝阳县| 枞阳县| 神池县| 久治县| 嘉峪关市| 贵州省| 启东市| 西昌市| 汨罗市| 白河县| 阜阳市| 荆门市| 曲阳县| 中超| 株洲县| 波密县| 正镶白旗| 民和| 榆社县| 湘乡市| 正安县|