记录一次数字和字符串比较时候犯的错误
请看如下代码
$app_name=$request->input('app_name',0);
if($app_name=='MyName'){
echo 'true';
}else{
return 'false';
}
输出结果
结果为 true
分析
我们可能会觉得奇怪,明明这两个不相等,为什么会输出 true呢,这里这段代码犯了一个低级错误,当app_name 参数不传递的时候,那么默认的app_name变量值为0.
php中数字和字符串进行比较时,当这个字符串是一个无法转换为数字的字符串,它就会被强制转化为数字,结果总是为0,所以我们就知道了原因了。
本作品采用《CC 协议》,转载必须注明作者和本文链接
所以尽量用全等号
这是个很基本的问题,根据你app_name这个命名应该就是个字符串,字符串默认值就不应该用 0 ,用'',null,false 才对。 数字与字符串比较,看字符串开头是否是合法数值,是的话可以转为合法数字,不然是转为0
8.0 好像解决这个问题了