3 回答

TA貢獻1802條經驗 獲得超10個贊
這個問題應該從PHP作為動態腳本語言說起:
動態語言的變量類型是隨存儲的變量而變化的,即變量類型是根據具體環境而進行變化的。
字符串"abc",從樓主的意思來看可能指確切字符串,但是對于PHP存儲的時候它是不能確定的,因為隨著語義的變化,其所起的作用也會變化
第一個case 0:,PHP腳本將常量0翻譯為確切的整數,與字符串比較大小時,需要將字符串轉換為整數。PHP腳本會將字符串abc,從十進制(默認)轉換為數字,但是abc很明顯不能代表十進制數,即轉換失敗,則PHP將結果置為0,如果將字符串表示為"0xabc",那么PHP腳本能夠發現0x標識,將abc作為十六進制轉換,所以能夠得到abc標識的十六進制整數。
如果樓主學過C,可以做一個簡單比較:
C中的case必須是數字常量,而不能是字符串,就因為C是變量類型確定的,運行時不能將確定的變量按語義隨意轉換。而PHP可以,因為PHP語言是動態的,變量類型是動態的。
或者從PHP的例子中學習:
如果一個文件將111111字符串(不是數字)存儲到文件,然后從文件直接讀取到變量$a,如下語法就可以將$a作為整數計算:
0+$a

TA貢獻1776條經驗 獲得超12個贊
PHP 中switch 的功能是:選擇執行某個代碼塊;其工作原理如下:
1.對表達式(一般是變量)進行一次性計算;
2.用變量的值與switch結構中 case 的值進行比較;
3.如果變量值與case的值相等,則執行與該 case 關聯的代碼;
4.代碼執行完后,break 語句阻止代碼跳入下一個 case 中繼續執行;
5.如果沒有 與之匹配的case條件,則執行 default中的代碼;
實例代碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <?php //星期 $week=2;
//對星期進行匹配,輸出對應的語句。 switch ($week){ case 1: echo "今天是周一,上班......"; break; case 2: echo "今天是周二,上班......"; break; case 3: echo "今天是周三,上班......"; break; case 4: echo "今天是周四,上班......"; break; case 5: echo "今天是周五,上班......"; break; default: echo "哈哈,今天是周末!!"; }
//今天是周二,上班...... ?> |
- 3 回答
- 0 關注
- 850 瀏覽
添加回答
舉報