switch 語句用于根據(jù)多個不同條件執(zhí)行不同動作。
PHP Switch 語句
如果您希望有選擇地執(zhí)行若干代碼塊之一,請使用 switch 語句。
語法
switch (n) { case label1: 如果 n=label1,此處代碼將執(zhí)行; break; case label2: 如果 n=label2,此處代碼將執(zhí)行; break; default: 如果 n 既不等于 label1 也不等于 label2,此處代碼將執(zhí)行; }
工作原理:首先對一個簡單的表達式 n(通常是變量)進行一次計算。將表達式的值與結(jié)構(gòu)中每個 case 的值進行比較。如果存在匹配,則執(zhí)行與 case 關(guān)聯(lián)的代碼。代碼執(zhí)行后,使用 break 來阻止代碼跳入下一個 case 中繼續(xù)執(zhí)行。default 語句用于不存在匹配(即沒有 case 為真)時執(zhí)行。
使用嵌套的if else語句導致類似的行為,但是switch提供了更加優(yōu)雅和最優(yōu)的解決方案。
<?php $favcolor="blue"; switch ($favcolor) { case "red": echo "你最喜歡的顏色是red!"; break; case "blue": echo "你最喜歡的顏色是blue!"; break; case "green": echo "你最喜歡的顏色是green!"; break; default: echo "你最喜歡的顏色既不是red, blue, 也不是green!"; } ?>
以上代碼最終輸入就是"你最喜歡的顏色是blue!"
注意:每個案例后面的break關(guān)鍵字用于保持代碼自動運行到下一種情況。如果你忘了break;聲明,PHP會自動繼續(xù)通過下一個case語句,即使情況不匹配。
<?php $i = 1; switch($i) { "1": echo 'One'; ; case "2": echo 'Two'; break; }
如果找不到匹配,則執(zhí)行default默認語句。
<?php $x=5; switch ($x) { case 1: echo "One"; break; case 2: echo "Two"; break; default: echo "沒有匹配"; } //Outputs "沒有匹配" ?>
另外,default語句是可選的,因此也可以省略。
如果沒有指定break語句,PHP將繼續(xù)執(zhí)行該語句,直到發(fā)現(xiàn)中斷為止。如果您需要在多個情況下到達相同的輸出,則可以使用此行為。
<?php $day = 'Wed'; switch ($day) { case 'Mon': echo '一個星期的第一天'; break; case 'Tue': case 'Wed': case 'Thu': echo '工作日'; break; case 'Fri': echo '星期五'; break; default: echo '周末'; } //Outputs "工作日" ?>
如果$day等于'Tue','Wed'或'Thu',上述示例將具有相同的輸出。