條件指令是程式語言的語法中不可或缺的一部份,事實上在本文之前的一些範例中我們也偷偷地用到了條件指令了。條件指令讓程式可以依照執行當下的一些情況改變程式的流程,以達到適應性程式設計的目的。
最簡單的條件指令就是if,它的基本語法如下:
if (條件式) {
條件式之計算結果是true的時候,要執行的所有指令敘述
}
上述的指令在條件式成立時會執行大括號中的內容,如果條件式的運算結果是不成立的,就當作這些指令都沒有發生過一樣。以下是簡單的例子:
?php
$age = 17;
if ($age>=18) {
echo "你可以考駕照囉!\n";
}
?>
在上面這個程式中,如果$age的內容等於或大於18的話,就會顯示出「你可以考駕照囉!」這個字串(其中\n是在命令提示字元執行時用來換列的符號,如果你是在瀏覽器中執行的話,請使用<br/>)。如果$age的內容小於18的話,則什麼訊息都不會出現。
如果我們希望不管是能不能考駕照都要出現訊息的話,就需要使用if/else敘述,其語法如下:
if (條件式) {
條件式傳回true(成立)時要執行的程式碼;
} else {
條件式傳回false(不成立)時要執行的程式碼;
}
在上述的程式例中,初學PHP的同學們要留意大括號的用法,它可以用來圈出要一同執行的指令碼範圍,它們的後面不能再加上分號喔。
以下是一個if/else的程式例:
<?php
$age = 17;
if ($age>=18) {
echo "你可以考駕照囉!\n";
} else {
echo "你還不能考駕照喔!\n";
}
?>
有些情況不是只有非黑即白的特性,而可能是有多種選擇,例如給一個分數,想要判定它是哪一個等第時,就需要有許多的else if,標準語法如下:
if (條件1) {
執行條件1成立時要做的程式碼;
} else if (條件2) {
執行條件2成立時要做的程式碼;
} else if (條件3) {
執行條件3成立時要做的程式碼;
} else {
以上3個條件都不成立時要做的程式碼;
}
使用以上的語法完成之成績等第判定的程式如下所示:
<?php
$score = 68;
echo "Score:$score, and your grade is ";
if ($score>=90) {
echo "A\n";
} else if ($score>=80) {
echo "B\n";
} else if ($score>=70) {
echo "C\n";
} else if ($score>=60) {
echo "D\n";
} else {
echo "Fail\n";
}
同學們可以試試看各種不同的分數,看看執行的結果和你想像的有沒有什麼不一樣喔。
還有一種多重決策的情況是每一個條件都符合單一內容時,就很適合於使用switch指令,它的標準語法如下:
switch($var) {
case value1:
statements for value1;
break;
case value2:
statements for value2;
break;
case value3:
statements for value3;
break;
default:
statements for the other values;
}
在上述的程式碼中,switch會根據變數$var的內容,檢查是否符號各個由case所列出來的單一值,如果符合的話就會執行該case之下的敘述區塊。請特別留意,在每一個case的最後面那一列都要使用break指令把執行流程擋下來(除非你打算這麼做,事實上也有些情況是非這樣不可),不然就會一直執行下去,直到沒有指令可以執行或是遇到另外一個break為止。
default類似else,就是都不符合上述條件的時候會被執行的區塊。不管是case或是default,它們的後面加上去的是冒號「:」,不是分號喔。
以下是簡單的程式範例:
<?php
$grade='C';
echo "Your score is between ";
switch($grade) {
case 'A':
echo "90~100";
break;
case 'B':
echo "80~89";
break;
case 'C':
echo "70~79";
break;
case 'D':
echo "60~69";
break;
default:
echo "0~59";
}
echo "\n";
?>