php的switch函数的陷阱
if(empty($reportCatid)||$reportCatid == 176){
$reportCatid = '177,178,179,180';
}
switch($reportCatid){
case 177:
$reportName.=' - 福房指数';
break;
case 178:
$reportName.=' - 二手房指数';
break;
case 179:
$reportName.=' - 每日交易数据';
break;
case 180:
$reportName.=' - 综合数据分析';
break;
}
猜猜结果如何。
PH这样的问题太多了,一不小心就中招。
@兰林 呵呵,说得很详细了。没错。。当时就觉得好像有点问题,总是显示默认的第一个case,后来才发现自动类型转换的陷阱~
呵呵,这是因为PHP是弱类型的原因
它会自动根据你的需要转换类型
这是他的优点,但是也是缺点
你的 case 后面跟的是一个 整数
所以,PHP在比较值的时候,会将$reportCatid首先转换为整数
然后对比
’177,178,179,180′ 转换之后就是177
就是说,永远都是177
如果你的目标是字符串比较
应该在case后对数字加上引号,使其由int型变为string型
好文,受教了