« 32. break 敘述的用法? | (回到Blog入口) | 34. PHP 的註解寫法 »

33. switch 敘述的用法?

jollen 發表於 October 27, 2006 3:30 PM

switch 是很好用的多條件判斷敘述,跟 if...elseif...elseif... 結構相同。switch 語法為:

1.

switch (EXPRESSION) { case 1: statement1; // 當 EXPRESSION 的值為 1 (integer) 時,則執行這裡 statement2; // 的敘述… ... break; case 2: statement10; // 當 EXPRESSION 的值為 2 (integer) 時,則執行這裡 statement20; //的敘述… … default: // 當 EXPRESSION 的值都未出現在以上的 case 時, // 則執行這裡的敘述。 statement1; statement2; ... break; }

2.

switch (EXPRESSION) : case 1: statements; break; case 2: statements; break; default: statements; break; endswitch;

第 2 種格式為第一種格式的冒號寫法。

請看底下的範例:

<?php switch ($i) { case 'A': $grade = 90; break; case 'b': case 'B': $grade = 80; break; default: $grade = 60; break; } ?>

這裡直接用一個表來觀察範例的執行結果:

$i 的值 最後 $grade 的值 A 90 a 60 B 80 b 80

switch 的用法簡單,唯一要注意的是 break 的使用。假如在該 case 敘述片斷裡的最後一行敘述後沒有加上 break 的話,程式就會繼續往下執行而不會跳出,所以會執行到其它 case 的敘述,但是這種特性也常被拿來當成小技巧使用,例如:

<?php higher_a = higher_b = higher_c = FALSE;
switch ($grade) { case 'A': higher_a = TRUE; case 'B': higher_b = TRUE; case 'C': higher_c = TRUE; break; } ?>

當 $grade 為 B 時,則由 higher_b = TRUE 敘述開始執行,因此結果為:

higher_a = FALSE; higher_b = TRUE; higher_c = TRUE;

如果 $grade = C,則最後結果變成:

higher_a = FALSE; higher_b = FALSE; higher_c = TRUE;

--jollen

版權聲明

請參閱頁面底部的 CC 授權條款。此外,Jollen's PHP 專欄禁止引用、修改與轉貼,如果您想與朋友分享的話,我們只允許網站連結(hyperlink)的形式。

發表一個評論

(如果你此前從未在此 Blog 上發表過評論,則你的評論必須在 Blog 主人驗證後才能顯示,請你耐心等候。)

| Top | Jollen's Forum |
Jollen's PHP 專欄採用 Attribution-NonCommercial-NoDerivs 2.5 授權條款
Copyright(c) 2001-2007,2010 www.jollen.org