比如 $a=34;0dff";
这是赋值,大家都知道的!
再比如比拟;
$a="0dff";
if(0==$a){
echo "true";
}else{
echo "false";
}
这是比拟!
这些都没得说了,大家一眼都能看出来!
那么,问题来了,上面的表达式,会输出什么字符呢?!
是true还是false?
可能结果会出乎你的猜想,上面输出true!
缘故原由如下,程序在编译实行过程中在进行==比拟时默认认为0dff便是0而不是字符串,以是就会输出true!
同类还有
$a="";
if(false==$a){
echo "false";
}elseif (''"==$a){
echo "empty";
}else{
echo "false";
}
在$a为空时我们想走empty的流程输出empty,但是实际实行却走false!
这也便是php这类弱类型措辞的缺陷!
不检讨变量类型的!
为理解决这个问题php供应了"===",即全等,来处理这类问题!
===不只须要值相同,还要类型相同!
即全等旁边如果类型不同,直接返回false,
如果两边值不等,直接返回false,
两者都相等,返回true!
因此,现在只需将上面的==,修正成===既可达到预期目标!
同类的!= !==也要把稳的!
关注我,互换,分享与填坑!