- PHP從入門到精通(第4版)(軟件開發(fā)視頻大講堂)
- 明日科技
- 1483字
- 2020-11-28 17:36:32
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語句。
- Functional Python Programming
- Dynamics 365 for Finance and Operations Development Cookbook(Fourth Edition)
- Java應用與實戰(zhàn)
- Learning Docker
- JavaFX Essentials
- MariaDB High Performance
- 你必須知道的204個Visual C++開發(fā)問題
- C語言程序設計實踐教程
- FLL+WRO樂高機器人競賽教程:機械、巡線與PID
- Oracle Exadata專家手冊
- Hands-On Full Stack Development with Go
- C/C++程序員面試指南
- Procedural Content Generation for C++ Game Development
- SQL Server實用教程(SQL Server 2008版)
- Android Development Tools for Eclipse