用惯了js中的switch,习惯的认为php中也应该是用===
来比较的,但是实际用了后才发现这种想法错了。
为了根据返回的值计算实际对应的参数,我使用了switch结构来写,代码抽离如下:
function getText($code){
switch($code){
case 0:return 'x';
case 1:return 'y';
default:return 'z';
}
}
echo getText(0);
echo getText(null);
期待的结果应该是 xz,但是实际上输出却是 xx。我看到这个结果唯一能想到的答案就是switch用了==
来判断而不是===
,于是我阅读了php手册中switch的描述。验证了我的猜想,确实使用的是双等号的松散比较。
虽然是php的规范设计,但是用着确实挺蛋疼的,所以我以后应该会避免使用php的switch语法,这个知识点就暂时记下了。。
相关文档
随便看看
畅言模块加载中