PHP教學-控制流程


控制流程的靈活安排,可以讓PHP程式模擬現實中的所有事件。
控制流程有
if…
if…else…
if…elseif…else…
switch
?:(三元運算)等。
《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{ //否則就執行子句二
子句二;
}
上述的例子,「子句一」與「子句二」之中只有一個子句會被執行。本站的會員與非會員就是使用這個控制流程。範例如下:
<?php
if($name!=""){  //會員登入時,顯示會員的暱稱
  echo "暱稱:$name";
}else{  //否則顯示Guest(訪客)
  echo "暱稱:Guest";
}
?>
《if…elseif…else…控制流程》
「if…elseif…else…控制流 程」具有多重判斷的功能,其中elseif可以有很多個,也就是可以有多種條件,else反而可以省略(如果條件都不成立就略過)。在執行本控制流程時, 愈前面的條件愈先被執行,條件一優先,再來是條件二…。一但條件成立,就會執行該條件下的子句,其他的條件就不管了。下列的標準語法流程中,子句一、子句 二、子句三只有一個會被執行。
標準語法結構如下:
if(條件一){ //條件一成立就執行子句一
子句一;
}elseif(條件二){ //條件二成立就執行子句二
子句二;
}else{ //否則就執行子句三
子句三;
}
很多個elseif的語法結構如下:
if(條件一){ //條件一成立就執行子句一
子句一;
}elseif(條件二){ //條件二成立就執行子句二
子句二;
}elseif(條件三){ //條件三成立就執行子句三
子句三;
}else{ //否則就執行子句四
子句四;
}
省略else的語法結構如下:
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的值,當$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.
變數==(條件)?子句一:子句二; //將結果存入變數
問號的左邊是判斷條件,條件成立時,傳回子句一;條件不成立時,傳回子句二。
範例:
<?php
echo $nickname=="" ? "Guest" : $nickname;  //直接輸出結果
?>
說明:如果$nickname(暱稱)為空字串,輸出「Guest」,否則輸出$nickname。

留言

這個網誌中的熱門文章

c語言-關於#define用法

CMD常用網管指令

PHP 與 JavaScript 之間傳值利用 json