PHP

條件指令(if/else, switch)

條件指令是程式語言的語法中不可或缺的一部份,事實上在本文之前的一些範例中我們也偷偷地用到了條件指令了。條件指令讓程式可以依照執行當下的一些情況改變程式的流程,以達到適應性程式設計的目的。

最簡單的條件指令就是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";
?>

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s