在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
php中很多人还不懂php中 0 , '' , null 和 false 之间的区别,这些区别有时会影响到数据判断的正确性和安全性,给程序的测试运行造成很多麻烦。另外在面试题中也会遇到这些问题,如下: <?php $str1 = null; $str2 = false; echo $str1==$str2 ? ‘相等’ : ‘不相等’; $str3 = ""; $str4 = 0; echo $str3==$str4 ? ‘相等’ : ‘不相等’; $str5 = 0; $str6 = '0'; echo $str5===$str6 ? ‘相等’ : ‘不相等’; $str7=0; $str=false; echo $str7==$str8 ? ‘相等’ : ‘不相等’; ?> 运行结果: //相等,相等,不相等,相等。 原因是在PHP中变量是以C语言的结构体来存储的,空字符串和NULL,false都是以值为0存储的,其中这个结构体有个zend_uchar type;这样的成员变量,他是用来保存变量的类型的,而空字符串的类型是string,NULL的类型是NULL,false是boolean。 这一点可以用echo gettype('');和echo gettype(NULL);来打印看看!而===运算符是不单比较值,还有比较类型的,所以第三个为false! 另外再说下,php中
所以可以这样说===是等于下面的函数: function eq($v1,$v2){ if($v1 == $v2 && gettype($v1) == gettype($v2)){ return 1; }else{ return 0; } } 所以空字符串(''),false,NULL和0是值相等而类型不一样!
文章参考自:http://blog.sina.com.cn/s/blog_4832ea590101cf7b.html |
2022-08-30
2022-07-18
2022-08-17
2022-11-06
2022-07-29
请发表评论