本章講述 PHP 語言中的 switch 語句。
switch 語句和 if 語句相似,都是條件語句。很多情況下,需要將一個變量(或者表達式) 與不同的值進行比較,并根據它等于哪個值來執行不同的代碼,這個時候,我們用 switch 語句更合適。
switch 語句的語法如下:
switch (expression)
{
case value:
statement
break;
case value:
statement
break;
[default:
statement^]
}
下面兩個例子用不同方法實現同樣的事情,第一個是用 if...elseif...else 語句,一個使用 switch語句。
<?php
if ($i == 0) {
echo "i equals 0";
} elseif ($i == 1) {
echo "i equals 1";
} elseif ($i == 2) {
echo "i equals 2";
}
else {
echo "i is not equal to 0, 1 or 2";
}
?>
上面這段 PHP 代碼的意思是:如果變量 $i 等于 0,則輸出 "i equals 0";如果變量 $i 等于 1,則輸出"i equals 1";如果變量 $i 等于 2,則輸出 "i equals 2";如果都不是,則輸出"i is not equal to0, 1 or 2"。
下面是對應的switch 代碼:
switch ($i) {
case 0:
echo "i equals 0";
break;
case 1:
echo "i equals 1";
break;
case 2:
echo "i equals 2";
break;
default:
echo "i is not equal to 0, 1 or 2";
}
?>
在每個 case 語句段后要加 break,如果不在 case 的語句段最后寫上 break 的話,PHP 將繼續執行下一個 case 中的語句段。
default 應該放在最后,只有在所有 case 都不符合的情況下,才執行 default 后面的語句。default 不是必須的,可以不寫。
case 表達式可以是整數,浮點數(小數),以及字符串。
下面是一個使用字符串的 switch 示例:
<?php
switch ($food) {
case "apple":
echo "give me an apple";
break;
case "orange":
echo "give me an orange";
break;
case "cake":
echo "give me a piece of cake";
break;
}
?>
一個 case 中的語句也可以為空,如下示例:
<?php
switch ($i) {
case 0:
case 1:
case 2:
echo "i is less than 3 but not negative";
break;
case 3:
echo "i is 3";
}
?>
在 switch 語句中,條件只求一次,然后和每個 case 比較,而在 elseif 語句中,條件會再次求值。如果你的條件比較復雜,或者是多次循環,用 switch 語句速度會更加快些。