有趣的 0
今天遇到个很有意思的问题,跟它杠了半天 哈哈哈。就是一个对于0的判断!
相信很多项目数据库表中都有status(状态)这个字段,那么0,1,2,3...各自代表不同的状态,在搜索功能中可能就会用这个状态值来搜索。那么在PHP文件肯定会预留一个变量来接收这个状态值,然后判断它是否存在再进行where语句的拼接。
那么问题来了,当你已经定义了这个接收状态的变量,但是这个变量并没有接收到任何值,这时对于变量判断就会和数字0一样。也就是说数字0代表了empty,!isset,false。但是如果是把0当做字符串的话就一切正常啦。
用了个两层判断解决这个问题。。。
例:
if($filter['status'] == '0'){
$whereis .=" AND `status` = '0' ";
}
if(!empty($filter['status'])){
$whereis .=" AND `status` = '{$filter['status']}' ";
}
但我觉得最好的解决办法就是不要用0咯,直接从1开始嘛,除非是有强迫症(哈哈哈)。