<?php
$var = 0;
switch($var) {
case "a":
echo "I think var is a";
break;
case "b":
echo "I think var is b";
break;
case "c":
echo "I think var is c";
break;
default:
echo "I know var is $var";
break;
}
?>
Run Code Online (Sandbox Code Playgroud)
也许其他人会发现这很有趣并且有答案.如果你运行它,它输出I think the var is a的时候清楚它的0.现在,我非常肯定这与我们在switch语句中使用字符串这一事实有关,但我们检查的变量是一个整数.有谁知道为什么PHP会这样做?这没什么大不了的,但今天确实给我带来了一些麻烦.
谢谢大家!
如果将a integer与a 进行比较string,string则转换为a number.因此,您的代码段实际上相当于:
$var = 0;
switch($var) {
case 0: // "a" gets converted to 0.
echo "I think var is a";
break;
case 0: // "b" gets converted to 0.
echo "I think var is b";
break;
case 0: // "c" gets converted to 0.
echo "I think var is c";
break;
default:
echo "I know var is $var";
break;
}
Run Code Online (Sandbox Code Playgroud)
这将I think var is a作为第一个案件主体被执行的输出产生.即使有3个候选者,也会选择第一个候选者,因为它出现在顶部.