條件
程式語言的三大邏輯:
- 基本的「循序執行」:由上到下一行一行執行程式敘述。
- 視情況的「條件判斷」:根據不同的條件來判斷後,執行不同的程式碼區塊。
- 重複執行的「迴圈」:將一段程式碼重複執行某個次數。
「條件判斷」可以讓程式可以根據不同情況,來決定要執行的程式碼,因而可以根據不同需求來提供更多樣化的功能及結果。
PHP條件判斷的指令有四種:
- 單向判斷:if
- 雙向判斷:if...else
- 多向判斷:if...elseif...else
- 依變數值做多向判斷:switch
單向判斷式:「if」
語法格式:
if(條件式) 當條件式成立時要執行的程式敘述;
如果要執行的程式敘述不止一行,則必須使用大括號包圍:
if(條件式) { 當條件式成立要執行的程式敘述1; 當條件式成立要執行的程式敘述2; ... 當條件式成立要執行的程式敘述n; }
提示:
而當條件不成立時,條件式後面該行程式碼或是程式區塊則會被跳過不執行。
所謂的條件式成立指的是:
- 比較運算得到的結果為True。
- 邏輯運算得到的結果為True。
- 非0的數字。
- 非空字串。
- 非空物件(不是null值)。
範例:
<?php $a = 9; if($a > 5) echo '條件成立<br/>'; if($a === 8) { echo '條件成立Part2'; $a++; } echo '$a='.$a; ?>
結果:
條件成立 $a=9
雙向判斷式:「if...else」
單向判斷式在條件不成立時會跳過程式碼不執行,而雙向判斷式除了可以在條件成立時,執行一段程式碼,也可以在條件不成立時,執行另外一段程式碼。
語法格式:
if(條件式) 當條件式成立時要執行的程式敘述; else 當條件式不成立時要執行的程式敘述;
如果要執行的程式敘述不止一行,則必須使用大括號包圍:
if(條件式) { 當條件式成立要執行的程式敘述1; 當條件式成立要執行的程式敘述2; ... 當條件式成立要執行的程式敘述n; } else { 當條件式不成立要執行的程式敘述1; 當條件式不成立要執行的程式敘述2; ... 當條件式不成立要執行的程式敘述n; }
範例:
<?php $account = 'Aaron'; if($account === 'Aaron') echo '登入成功<br/>'; else { echo '登入失敗<br/>'; echo '錯誤的使用者名稱<br/>'; } $a = -3; if($a > 0) { echo '$a是正數<br/>'; } else { echo '$a是負數<br/>'; $a *= -1; } echo '$a='.$a; ?>
結果:
登入成功 $a=3
多向判斷式:「if...elseif...else」
多項判斷可以由上到下提供多個判斷式,當第一個判斷是成立時則執行第一個程式區塊,其它則忽略,且之後的判斷式都不會再被執行做判斷;第一個判斷式如果不成立,則會執行第二個判斷式,如果成立,則會執行第二個程式區塊,且之後的判斷式都不會再被做判斷,依此類推;如果全部的判斷式都不成立,則會執行最後一個else程式區塊。
語法格式:
if(條件式一) 當條件一式成立時要執行的程式敘述; elseif(條件式二) 當條件二式成立時要執行的程式敘述; . . . elseif(條件式n) 當條件n式成立時要執行的程式敘述; else 當所有條件式皆不成立時要執行的程式敘述;
如果要執行的程式敘述不止一行,則必須使用大括號包圍:
if(條件式一) { 當條件式ㄧ成立要執行的程式敘述1; 當條件式ㄧ成立要執行的程式敘述2; ... 當條件式ㄧ成立要執行的程式敘述n; } elseif(條件式二) { 當條件式二成立要執行的程式敘述1; 當條件式二成立要執行的程式敘述2; ... 當條件式二成立要執行的程式敘述n; } . . . elseif(條件式n) { 當條件式n成立要執行的程式敘述1; 當條件式n成立要執行的程式敘述2; ... 當條件式n成立要執行的程式敘述n; } else { 當所有條件式皆不成立要執行的程式敘述1; 當所有條件式皆不成立要執行的程式敘述2; ... 當所有條件式皆不成立要執行的程式敘述n; }
提示:在多項判斷式內,所以條件都不成立時的else區塊是可有可無的。
範例:
<?php $score = 60; if($score == 100) { echo '滿分'; } elseif($score < 100 && $score >= 60) { echo '及格'; } elseif($score < 60 && $score > 0) { echo '不及格'; } else { echo '沒有分數'; } ?>
結果:
及格
依變數值做多向判斷:「switch」
有時候,程式會根據某個變數內的值的不同而需要做不同的處理,這時用switch判斷式來處理會比較簡潔,switch本身也是一種多向的判斷式,但一般只能用來判斷某個變數值為何。
語法格式:
swtich(變數) { case 條件值1: 變數值和條件值1相等時要執行程式碼; break; case 條件值1: 變數值和條件值1相等時要執行程式碼; break; . . . case 條件值n: 變數值和條件值n相等時要執行程式碼; break; default: 所有條件值都不成立時會執行的程式區碼; }
注意:
- switch指令內的變數型態必須和case後面的條件值型態一樣才能做比較。
- 每個case條件值和default指令後面要加上冒號「:」。
- 每個case區塊要執行的程式敘述最下面要加上break,有break才會跳離該switch判斷式,否則程式碼會往下一個case區塊繼續執行,直到遇見break或整個switch的判斷式最後。
- default區塊不一定要放在最下面。
- default區塊不是必要的,也可以不使用它。
範例:
<?php // 某個算命程式的程式片段 $luck = rand(1, 5); // 取得隨機1~5之間的亂數 switch($luck) { case 1: echo '你今天會發一點小財。'; echo '<br/>'; break; case 2: echo '你今天會有桃花運。'; echo '<br/>'; break; case 3: echo '你今天會受到表揚。'; echo '<br/>'; break; case 4: echo '你今天會被公司升職。'; echo '<br/>'; break; case 5: echo '你今天會很快樂。'; echo '<br/>'; break; default: echo '不明的錯誤'; echo '<br/>'; } ?>
執行結果將根據取得的亂數數值而有所不同。