PHP教學-控制流程
控制流程的靈活安排,可以讓PHP程式模擬現實中的所有事件。
控制流程有
if…
if…else…
if…elseif…else…
switch
?:(三元運算)等。
控制流程有
if…
if…else…
if…elseif…else…
switch
?:(三元運算)等。
《if控制流程》
if控制流程的寫法如下:
if(條件){
子句;
}
if(條件){
子句;
}
如果小括號「()」裡的條件成立的話,就會執行大括號「{}」裡的子句,如果條件不成立則會跳過這一段if控制結構。
舉例來說,有一個用來測量太胖或太瘦的工具叫作BMI(身體質量指數),公式是:體重/身高^2(體重除以身高的平方。體重以公斤為單位、身高以公尺為單位。)
範
例中的兩個if控制結構,當我們沒有指定$h與$w的內容時,$h的內容為空($h==""),條件成立,$w的情形也一樣,所以兩個控制結構都會被執
行,並且指定$h為1.72、$w為60,程式執行到最後一行,會輸出BMI。所以範例會輸出一個身高1.72公尺、體重60公斤的人的BMI。
<?php if($h==""){ //如果$h的內容為空字串 $h = 1.72; //身高(單位:公尺) } if($w==""){ //如果$w的內容為空字串 $w = 60; //體重(單位:公斤) } echo "您的BMI=".$w/($h*$h); //輸出您的BMI ?>
《if…else…控制流程》
「if…else…控制流程」是PHP最常用的控制流程之一,為了容易理解,我把他稱之為「二分法」,意思是「如果條件成立的話就…否則就…」。
語法的流程如下:
if(條件){ //條件成立就執行子句一
子句一;
}else{ //否則就執行子句二
子句二;
}
if(條件){ //條件成立就執行子句一
子句一;
}else{ //否則就執行子句二
子句二;
}
上述的例子,「子句一」與「子句二」之中只有一個子句會被執行。本站的會員與非會員就是使用這個控制流程。範例如下:
<?php if($name!=""){ //會員登入時,顯示會員的暱稱 echo "暱稱:$name"; }else{ //否則顯示Guest(訪客) echo "暱稱:Guest"; } ?>
《if…elseif…else…控制流程》
「if…elseif…else…控制流
程」具有多重判斷的功能,其中elseif可以有很多個,也就是可以有多種條件,else反而可以省略(如果條件都不成立就略過)。在執行本控制流程時,
愈前面的條件愈先被執行,條件一優先,再來是條件二…。一但條件成立,就會執行該條件下的子句,其他的條件就不管了。下列的標準語法流程中,子句一、子句
二、子句三只有一個會被執行。
標準語法結構如下:
if(條件一){ //條件一成立就執行子句一
子句一;
}elseif(條件二){ //條件二成立就執行子句二
子句二;
}else{ //否則就執行子句三
子句三;
}
if(條件一){ //條件一成立就執行子句一
子句一;
}elseif(條件二){ //條件二成立就執行子句二
子句二;
}else{ //否則就執行子句三
子句三;
}
很多個elseif的語法結構如下:
if(條件一){ //條件一成立就執行子句一
子句一;
}elseif(條件二){ //條件二成立就執行子句二
子句二;
}elseif(條件三){ //條件三成立就執行子句三
子句三;
}else{ //否則就執行子句四
子句四;
}
if(條件一){ //條件一成立就執行子句一
子句一;
}elseif(條件二){ //條件二成立就執行子句二
子句二;
}elseif(條件三){ //條件三成立就執行子句三
子句三;
}else{ //否則就執行子句四
子句四;
}
省略else的語法結構如下:
if(條件一){ //條件一成立就執行子句一
子句一;
}elseif(條件二){ //條件二成立就執行子句二
子句二;
}elseif(條件三){ //條件三成立就執行子句三
子句三;
} //條件一、條件二、條件三都不成立時,不會處理其他的情況,只會略過本控制結構。
if(條件一){ //條件一成立就執行子句一
子句一;
}elseif(條件二){ //條件二成立就執行子句二
子句二;
}elseif(條件三){ //條件三成立就執行子句三
子句三;
} //條件一、條件二、條件三都不成立時,不會處理其他的情況,只會略過本控制結構。
舉BMI(身體質量指數)的為例,BMI對於人的體重有四種分類「過輕」、「正常」、「過重」、「肥胖」,寫成PHP程式如下:
<?php if($h==""){ //如果$h的內容為空字串 $h = 1.72; //身高(單位:公尺) } if($w==""){ //如果$w的內容為空字串 $w = 60; //體重(單位:公斤) } $bmi = $w/($h*$h); echo "您的BMI:".$bmi."<br>狀況:"; if($bmi>=30){ echo "肥胖!"; }elseif($bmi>=25){ echo "過重!"; }elseif($bmi>=18.5){ echo "正常!"; }else{ echo "過輕!"; } ?>
《switch》
switch控制流程與if系列的控制流程相同,在多種條件的情況下,最多僅能有一個條件被接受,而該條件下的子句才會被執行。
標準語法如下:
switch($i){
case 1: //$i值等於1,特別注意:1的後面是冒號「:」
子句一;
break; //每一個case的結束,一定要加上break;
case 2: //$i值等於2
子句二;
break;
case 3: //$i值等於3
子句三;
break;
default: //$i值為其他的情況
子句四;
break;
}
switch($i){
case 1: //$i值等於1,特別注意:1的後面是冒號「:」
子句一;
break; //每一個case的結束,一定要加上break;
case 2: //$i值等於2
子句二;
break;
case 3: //$i值等於3
子句三;
break;
default: //$i值為其他的情況
子句四;
break;
}
switch顧名思義,就像開關,上述的標準語法中,判斷的條件是變數$i的值,當$i值等於1則執行子句一;當$i值等於2則執行子句二;當$i值等於3則執行子句三;當$i值無法匹配所有的條件時,執行子句四。
以下為例:
<?php switch($class){ case 1: //$class值等於1 echo "英文"; break; case 2: //$class值等於2 echo "憲法"; break; case 3: //$class值等於3 echo "民法"; break; default: //$class值為其他的情況 echo "國文"; break; } ?>
上述的範例,default就像if系列控制流程的else,如果沒有選擇測驗科目時,國文就是預設的測驗科目。default同else一樣,也可以省略不要,當省略default時,又無法匹配任何條件,執行的程式同樣也會略過這個switch運算式。
《三元運算子(?:)》
三元運算子屬於PHP的比較運算子中的另類,其特性介於比較運算子與控制流程之間,故寫於此。
三元運算子是由一個問號與一個冒號組成,他的作用類似if…else控制流程,只是語法更為精簡。標準語法如下:
1.
echo 條件?子句一:子句二; //直接輸出結果
2.
變數==(條件)?子句一:子句二; //將結果存入變數
echo 條件?子句一:子句二; //直接輸出結果
2.
變數==(條件)?子句一:子句二; //將結果存入變數
問號的左邊是判斷條件,條件成立時,傳回子句一;條件不成立時,傳回子句二。
範例:
<?php echo $nickname=="" ? "Guest" : $nickname; //直接輸出結果 ?>
說明:如果$nickname(暱稱)為空字串,輸出「Guest」,否則輸出$nickname。
留言
張貼留言