開關
switch
結構執行與一系列 if
語句相同的功能,但可以用更少的程式碼行完成工作。將 switch
語句中定義的要測試的值與每個 case
語句中的值進行相等性比較,直到找到匹配並執行該塊中的程式碼。如果找不到匹配的 case
語句,則執行 default
塊中的程式碼(如果存在)。
case
或 default
語句中的每個程式碼塊都應以 break
語句結束。這將停止 switch
結構的執行,並在之後立即繼續執行程式碼。如果省略 break
語句,則執行下一個 case
語句的程式碼,即使沒有匹配項也是如此。如果忘記了 break
語句,這可能會導致意外的程式碼執行,但在多個 case
語句需要共享相同程式碼的情況下也很有用。
switch ($colour) {
case "red":
echo "the colour is red";
break;
case "green":
case "blue":
echo "the colour is green or blue";
break;
case "yellow":
echo "the colour is yellow";
// note missing break, the next block will also be executed
case "black":
echo "the colour is black";
break;
default:
echo "the colour is something else";
break;
}
除了測試固定值之外,還可以通過向 switch
語句和 case
語句的任何表示式提供布林值來強制構造測試動態語句。請記住使用第一個匹配值,因此以下程式碼將輸出“超過 100”:
$i = 1048;
switch (true) {
case ($i > 0):
echo "more than 0";
break;
case ($i > 100):
echo "more than 100";
break;
case ($i > 1000):
echo "more than 1000";
break;
}
有關使用 switch
構造時鬆散鍵入的可能問題,請參閱 Switch Surprises