A. php里 switch case條件語句的問題
佩服樓主 很細心哪!
這個問題應該從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
上述表達式得到的結果也可以作為動態語言的一個變現來看
B. php case 用法
Switch 語句
如果您希望有選擇地執行若干代碼塊李廳之一,請使用 Switch 語句。
使用 Switch 語句可以避免冗長的 if..elseif..else 代碼塊。
語法
switch (expression)
{
case label1:
code to be executed if expression = label1;
break;
case label2:
code to be executed if expression = label2;
break;
default:
code to be executed
if expression is different
from both label1 and label2;
}
實例
工作原理:
對表達式嫌腔(通常是變數)進行一次計算
把表達式的值與結構中 case 的值進行比較
如果存在匹配,則執行與 case 關聯的芹擾衫代碼
代碼執行後,break 語句阻止代碼跳入下一個 case 中繼續執行
如果沒有 case 為真,則使用 default 語句
<?php
switch ($x)
{
case 1:
echo "Number 1";
break;
case 2:
echo "Number 2";
break;
case 3:
echo "Number 3";
break;
default:
echo "No number between 1 and 3";
}
?>
</body>
</html>
C. php語言編寫switch判斷成績代碼。分別輸出優秀、良好、中等、及格和不及格。
格式錯誤了,應該是這樣的:
<?php
switch ($score)
{
case 0:
"$score>=90&&$score<=100":
echo"優秀<br>";
break;
case 1:
"$score>=80&&$score<90":
echo"良好<br>";
break;
case 3:
"$score>=70&&$score<80":
echo"中等<br>";
break;
case 4:
"$score>=60&&$score<70":
echo"及格<br>";
break;
case 5:
"$score>=0&&$score<60":
echo"不及格<br>";
break;
default:
echo"成績輸入錯誤<br>";
}
?>
因為我這里沒有PHP環境所以也就沒測試,但應該就是這樣的了,。