编程语言您现在的位置是:首页 > 博客日志 > 编程语言

php null和false相等_php中null和false和0之间的区别

<a href='mailto:'>微wx笑</a>的头像微wx笑 2021-12-11编程语言 3 0关键字:   

php0跟false使用==有时相等必须用===

php中很多还不懂php中0,"",null和false之间的区别,这些区别有时会影响到数据判断的正确性和安全性,给程序的测试运行造成很多麻烦。所以必须好好的看好了下面的例子JOq无知


JOq无知

简单来说就是 他们的==和===的区别:第一个是值相等就为true    第二个必须是值和类型都相等才是trueJOq无知


JOq无知

先看一个例子:JOq无知


JOq无知

$str1 = null;JOq无知


JOq无知

$str2 = false;JOq无知


JOq无知

echo $str1==$str2 ? ‘相等’ : ‘不相等’;JOq无知


JOq无知

$str3 = "";JOq无知


JOq无知

$str4 = 0;JOq无知


JOq无知

echo $str3==$str4 ? ‘相等’ : ‘不相等’;JOq无知


JOq无知

$str5 = 0;JOq无知


JOq无知

$str6 = '0';JOq无知


JOq无知

echo $str5===$str6 ? ‘相等’ : ‘不相等’;JOq无知


JOq无知

$str7=0;JOq无知


JOq无知

$str=false;JOq无知


JOq无知

echo $str7==$str8 ? ‘相等’ : ‘不相等’;JOq无知


JOq无知

?>JOq无知


JOq无知

运行结果:JOq无知


JOq无知

//相等,相等,不相等,相等。JOq无知


JOq无知

原因是在PHP中变量是以C语言的结构体来存储的,空字符串和NULL,false都是以值为0存储的,其中这个结构体有个zend_uchartype;这样的成员变量,他是用来保存变量的类型的,而空字符串的类型是string,NULL的类型是NULL,false是boolean。JOq无知


JOq无知

这一点可以用echo gettype('');和echogettype(NULL);来打印看看!而===运算符是不单比较值,还有比较类型的,所以第三个为false!JOq无知


JOq无知

所以可以这样说===是等于下面的函数:JOq无知


JOq无知

functioneq($v1,$v2) {JOq无知

if($v1 ==$v2&&gettype($v1) ==gettype($v2)) {JOq无知

return 1;JOq无知


JOq无知

} else {JOq无知

return 0;JOq无知


JOq无知

}JOq无知


JOq无知

}JOq无知


JOq无知

所以空字符串(''),false,NULL和0是值相等而类型不一样!JOq无知


JOq无知

注意:JOq无知


JOq无知

NULL是一种特殊的类型.JOq无知


JOq无知

两种情况下为NULLJOq无知


JOq无知

1. $var = NULL;JOq无知


JOq无知

2. $var;JOq无知


JOq无知

3.""、0、"0"、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的,如果var 为空,则返回 TRUE。JOq无知

————————————————JOq无知

版权声明:本文为CSDN博主「叶子绿绿的」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。JOq无知

原文链接:https://blog.csdn.net/weixin_35671798/article/details/115091625JOq无知


JOq无知

本文为转载文章,版权归原作者所有,不代表本站立场和观点。

很赞哦! () 有话说 ()

相关文章