分支語句
無論在何種編程語言中,流程控制都是很重要的內容。由于 PHP 的大部分語法都繼承了C語言的特點,
因此在流程控制方面,PHP 有著和C語言類似的流程控制。
if else 語句是流程控制中根據條件判斷執行的一種。該語句執行時先對條件進行判斷,然后根據判斷結
果做出相應的操作。它又可以細分為三種,分別是 if 語句、if…else 語句、if…else if…else 語句。
- if 語句
if 語句是流程控制中最簡單的一種。只判斷某個條件是否為真,如果為真就執行特定的語句塊。語法格
式如下
if (判斷條件) {
語句塊;}
如果需要執行的語句塊包含一條以上的語句,則要使用{ }把 它們括起來,表示一個整體;如果要執行的
語句只有一條,就可以省略大括號標記。像下面這樣
if (判斷條件)
一條語句;
<?php
//定義一個數字,使用 if 語句判斷這個數字是不是偶數,$num = 34;if ($num % 2 == 0) {echo '$num ='.$num.', 是偶數!';}?>
if…else 語句
if 語句只能對判斷結果為真的情況執行操作,這在很多情況下是不夠的,于是就有了 if…else 這種形式的
語句。與 if 判斷不同,if…else 語句不僅對判斷結果為真的情況執行操作,對非真的情況也可以執行相應
的操作。
else 語句延伸了 if 語句,可以在 if 語句中表達式的值為 FALSE 時執行相應的語句。另外需要注意的
是,else 語句是 if 語句的從句,必須和 if 語句一起使用,不能單獨存在。
if (判斷條件) {
語句塊 1;} else {
語句塊 2;}
在上面的格式中,如果“判斷條件”為真,則執行“語句塊 1”;否則執行“語句塊 2”。“語句塊 1”和“語句塊
2”都可以包含多條語句。與 if 語句相同的是,如果“語句塊 1”和“語句塊 2”中都只包含一條語句的話,可
以省略大括號{ }.
<?php$num = rand(1,31); //生成一個 1~31 之間的隨機數if ($num % 2 == 0) {echo '$num ='.$num.', 是偶數!';} else {echo '$num ='.$num.', 是奇數!';}?>
if…else if…else 語句
else if 語句和 else 語句一樣,它延伸了 if 語句,else if 語句會根據不同的表達式來確定執行哪個語句
塊
if (判斷條件 1) {語句塊 1;} else if (判斷條件 2) {語句塊 2;} else if (判斷條件 3) {語句塊 3;}......else if (判斷條件 n) {
語句塊 n;}else{
語句塊 n+1;}
在上面的 else if 的語法中,如果第一個“判斷條件 1”為 TRUE,則執行“語句塊 1”語句;如果第二個“判斷
條件 2”為 TRUE,則執行“語句塊 2”語句;以此類推。如果表達式的條件都不為 TRUE,則執行 else 子句
中的“語句塊 n+1”語句,當然最后的 else 語句也可以省略。
在 else if 語句中同時只能有一個表達式為 TRUE,即在 else if 語句中只能有一個語句塊被執行。如果有
多個表達式的值為 TRUE 時,只會執行第一個表達式所對應的語句塊。
<?php$score = 89;
if ($score > 90) {echo '成績的級別為:優!';} else if ($score > 70) {echo '成績的級別為:良!';} else if ($score > 60) {echo '成績的級別為:中!';} else {echo '成績的級別為:差!';}?>
switch
switch 語句和 if…else if…else 語句相似,也是一種分支結構,與 if…else if…else 語句相比 switch 語句
更加簡潔明了。
switch 語句由一個表達式和多個 case 標簽組成,case 標簽后緊跟一個代碼塊,case 標簽作為這個代碼
塊的標識。
switch(表達式){case 值 1:
語句塊 1;break;case 值 2:
語句塊 2;break;... ...case 值 n:
語句塊 n;break;default:
語句塊 n+1;}
switch 語句根據表達式的值,依次與 case 中的值進行比較,如果不相等,繼續查找下一個 case;如果
相等,就會執行對應的語句,直到 switch 語句結束或遇到 break 為止。
一般來說,switch 語句最終都有一個默認值 default,如果在前面的 case 中沒有找到相符的條件,則執
行默認語句,和 else 語句類似。
和 if 語句不同的是,switch 語句后面表達式的數據類型只能是整型或字符串,不能是 bool 型。通
常這個表達式是一個變量名稱,雖然 PHP 是弱類型語言,在 switch 后面表達式的變量可以是任意
類型數據,但為了保證匹配執行的準確性,最好只使用整型或字符串中的一種類型。
和 if 語句不同的是,switch 語句后面的花括號是必須有的。
case 語句的個數沒有規定,可以無限增加。但 case 標簽和 case 標簽后面的值之間應該有一個空
格,值后面必須有一個冒號,這是語法的一部分。
switch 匹配完成以后,將依次逐條執行匹配的分支模塊中的語句,直到 switch 結構結束或者遇到
了 break 語句才停止執行。所以,如果一個分支語句的后面沒有寫上 break 語句,程序將會繼續
執行下一個分支語句的內容。
與 if 語句中的 else 類似,switch 語句中 default 標簽直接在后面加上一個冒號,看似沒有條件,
其實是有條件的,條件就是“表達式”的值不能與前面任何一個 case 標簽后的值相等,這時才執行
default 分支中的語句。default 標簽和 if 中的 else 子句一樣,它不是 switch 語句中必需的,可以
省略
<?php$week = date('D');
##
循環語句
循環語句可以在滿足條件的情況下反復執行某一個操作。在 PHP 中提供了 4 個循環控制語句,分別是
while、do while、for 和 foreach(主要用于遍歷數組)循環語句。1. while 循環
while 循環的作用是反復執行某一項操作,是循環語句中最簡單的一個。該語句的特點是:先判斷表達
式,當表達式結果為真時執行相應的語句。
while 循環的語法格式如下:switch($week){case 'Mon':echo '星期一';break;case 'Tue':echo '星期二';break;case 'Wed':echo '星期三';break;case 'Thu':echo '星期四';break;case 'Fri':echo '星期五';break;case 'Sat':echo '星期六';break;case 'Sun':echo '星期日';break;}?>
- while循環
while 循環的作用是反復執行某一項操作,是循環語句中最簡單的一個。該語句的特點是:先判斷表達
式,當表達式結果為真時執行相應的語句。
while (表達式) {
語句塊;}
當表達式的值為真時,將執行循環體內的 PHP 語句塊,執行結束后,再返回到表達式繼續進行判斷,判
斷為真時繼續執行語句塊中的代碼,直到表達式的值為假時才跳出循環。
while 循環中“表達式”的計算結果一定要是布爾型的 TRUE 或 FALSE,如果是其他類型的值也會自動轉換
為布爾類型的值。通常這個表達式是使用比較運算符或者邏輯運算符計算后的值。“語句塊”是一條語句
或一個復合語句(代碼塊)。當 while 循環語句中只有一條語句時可以將包裹代碼塊的大括號{ }省略。
如果是多條語句的代碼塊,則一定要使用大括號{ }包裹起來。
<?php$num = 1;while($num <= 10) {echo $num.($num == 10 ? '' : ', ');$num++;}?>
do while 循環
do while 和 while 循環非常相似,區別在于 do while 循環的表達式是在每次循環結束時檢查而不是在
開始時,而且不論表達式的結果如何 do while 循環語句都會執行一次,因為表達式的值是每次循環結束
后才檢查的。而在 while 循環中就不同了,表達式的值在循環開始時檢查,如果一開始就為 FALSE,則
整個循環立即終止。
do {
語句塊;} while (表達式);
其中 while 語句中“表達式”的計算結果也一定要是布爾型的 TRUE 或 FALSE。“語句塊”也可以是一條語句
或一個復合語句(代碼塊)。當 do while 語句語句塊中只有一條語句時,也可以省略大括號{ }。
注意:使用 do while 時最后一定要有一個分號;,分號也是 do while 循環語法的一部分。
do while 循環語句的執行流程是:先執行一次循環體中的語句塊,然后判斷表達式的值,當表達式的值
為 TRUE 時,返回重新執行循環體中的語句塊,如此反復,直到表達式的值等于 FALSE 為止,此時循環
結束。其特點是先執行循環體,然后判斷循環條件是否成立。
<?php$sum = 0;$i = 1;do {$sum += $i;$i++;} while ($i <= 50);echo '1 + 2 + 3 +...+ 49 + 50 = '. $sum;?>
for循環
for 循環是 PHP 中最復雜的循環結構。for 循環語句能夠按照已知的循環次數進行循環操作,適用于明
確知道執行次數的情況。
for 循環的格式和前面介紹的while 和 do while 兩種循環語句不一樣,for 循環將控制循環次數的變量預
先定義在 for 語句中。雖然 for 循環是 PHP 中最復雜的循環結構,但使用起來非常方便。
for (初始化表達式; 條件判斷; 變量更新) {
循環體;}
參數說明如下:
·初始化表達式:通常用于聲明一個計數器的初始值,即循環開始的值;
·條件判斷:用于控制是否執行循環體中的代碼,如果條件為 FALSE ,則立即退出循環;
·變量更新:循環每執行一次,馬上修改計數器的值;
·循環體:條件判斷為真時,需要執行的若干代碼。
通過 for 循環來計算 100 的階乘
<?php$sum = 1;for ($i = 1; $i <= 100; $i++) {$sum *= $i;}echo '100! = '.$sum;?>
for 循環語句也可以像 while 語句一樣嵌套使用,即在 for 循環語句中包含另外的一個或多個 for 循環語
句。通過對 for 循環語句進行嵌套,可以完成一些復雜的編程。比如打印九九乘法表
<?phpfor ($i = 1; $i <= 9; $i++) {for ($j = 1; $j <= $i; $j++) {echo $j.' * '.$i.' = '.$i*$j.' ';}echo '<br>';}?>