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环境所以也就没测试,但应该就是这样的了,。