PHP 快速導覽 - if 選擇

PHP 最簡單的選擇結構 (selection structure) 為單一個 if 陳述 (if statement) ,通常在關鍵字 (keyword) if 後接一個小括弧,該小括弧內的運算式 (expression) 即為條件 (condition) 。形式如下




若運算式的結果為 true , 也就是條件為真,其後用大括弧圍起來的程式區塊 (block) 便會執行,而若運算式的結果為 false ,這樣一來條件就為假,程式會跳過大括弧,尋找右大括號 } 後的第一個陳述執行。


如果不用大括號圍住 if 陳述後作為分流的程式碼,通常直譯器只接受一行,因此為避免程式執行的歧異,或非預期的錯誤,養成使用大括弧會是好習慣。


以下程式示範使用單一的 if 陳述
<?php
$a = 'h';
$b = 'h';
if ($a == $b) {
    echo "Welcome to my world!";
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:cf03.php
    功能:示範 PHP 程式 
    作者:張凱慶
    時間:西元 2013 年 2 月 */
?>


執行結果如下



程式的第 4 行
if ($a == $b) {


由於變數 $a 及變數 $b 裡頭所儲存的值都是小寫字母 h 的位元編碼,所以條件為真, if 陳述後頭大括弧的陳述便會執行。


if 也可以跟關鍵字 else 連用,這樣一來, if 的條件為假時,程式跳過 if 陳述後頭的大括弧,而去找 else 後頭大括弧的陳述來執行。


以下程式示範 if-else 陳述的使用
<?php
$a = 'h';
$b = 'k';
if ($a == $b) {
    echo "Welcome to my world!";
}
else {
    echo "How do you do?";
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:cf04.php
    功能:示範 PHP 程式 
    作者:張凱慶
    時間:西元 2013 年 2 月 */
?>


執行結果如下



此例中,由於第 4 行
if ($a == $b) {


由於變數 $a 不等於變數 $b ,所以程式會跳到執行第 7 到 9 行
else {
    echo "How do you do?";
}


if-else 也可以是巢狀 (nested) 的使用,例如
<?php
$a = 'h';
$b = 'k';
if ($a == 'a') {
    echo "Yes!";
}
else {
    if ($a == $b) {
        echo "No!";
    }
    else {
        echo "What?";
    }
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:cf05.php
    功能:示範 PHP 程式 
    作者:張凱慶
    時間:西元 2013 年 2 月 */
?>


編譯後執行,如下



所謂巢狀的 if-else 陳述就是形如第 4 到 14 行的地方
if ($a == 'a') {
    echo "Yes!";
}
else {
    if ($a == $b) {
        echo "No!";
    }
    else {
        echo "What?";
    }
}


第 7 行的 else 後頭的大括弧內,另外使用一組 if-else 陳述,這個地方由於我們利用縮排 (indentation) 表現清楚原始程式碼的語意,看起來凹陷下去,看似好像巢一般,故稱為巢狀。巢狀的 if-else 經常出現在需要多重選擇判斷的的場合。


由於巢狀的 if-else 很常用,所以第 4 到 14 行也可以寫成
if ($a == 'a') {
    echo "Yes!";
}
else if ($a == $b) {
    echo "No!";
}
else {
    echo "What?";
}


或是把 elseif 連起來構成另一個關鍵字 elseif
if ($a == 'a') {
    echo "Yes!";
}
elseif ($a == $b) {
    echo "No!";
}
else {
    echo "What?";
}


這寫寫法都是允許的。


中英文術語對照
選擇結構selection structure
if 陳述if statement
關鍵字keyword
運算式expression
條件condition
區塊block
巢狀nested
縮排indentation


您可以繼續參考
控制結構


相關目錄
回 PHP 快速導覽
回 PHP 教材
回首頁


參考資料
http://www.php.net/manual/en/control-structures.if.php
http://www.php.net/manual/en/control-structures.else.php
http://www.php.net/manual/en/control-structures.elseif.php

沒有留言: