您的位置 首页 php

php踩过的那些坑(2) false,NULL,0,''详解

一、前方有坑

php开发过程中,难免会遇到这四个值:false,null,0,’’,并且也会对这四个值进行比较,然后分别进行业务代码处理。一招不慎,就会踩到坑,影响数据判断的正确性和安全性,以至于造成代码不健壮,给程序的测试和运行造成很多的麻烦。

看如下代码:

二、防坑策略

== 会先进行类型转换,再进行对比,而===会先比较类型,如果类型不同直接返回不相等。

三、为啥有坑

先了解这四个值的类型:

$a = NULL; $b = ”; $c = 0; $d = false;

echo gettype($a); //输出NULL

echo gettype($b); //输出string

echo gettype($c); //输出 integer

echo gettype($d); //输出 boolean

原来这四个值的类型是不一样的!所以结合防坑策略就好理解了。

人生有坑,处处提防

其实,在PHP中变量是以 C语言 的结构体来存储的,”、NULL,false都是以值为0存储的,其中这个结构体有个zend_uchartype;这样的成员变量,他是用来保存变量的类型的,并且”的类型是string,NULL的类型是NULL,false是boolean。

四、防坑提示

扩展一下对这四个值的理解:

$a = NULL; $b = ”; $c = 0; $d = false;

echo isset($a) ? 1:0; //输出0

echo isset($b) ? 1:0; //输出1

echo isset($c) ? 1:0; //输出1

echo isset($d) ? 1:0; //输出1

echo ‘<br>’;

echo is_null($a) ? 1:0; //输出1

echo is_null($b) ? 1:0; //输出0

echo is_null($c) ? 1:0; //输出0

echo is_null($d) ? 1:0; //输出0

echo ‘<br>’;

echo empty($a) ? 1:0; //输出1

echo empty($b) ? 1:0; //输出1

echo empty($c) ? 1:0; //输出1

echo empty($d) ? 1:0; //输出1

世界上本没有坑,坑的人多了也就成了坑

文章来源:智云一二三科技

文章标题:php踩过的那些坑(2) false,NULL,0,''详解

文章地址:https://www.zhihuclub.com/80200.shtml

关于作者: 智云科技

热门文章

网站地图