php中很多还不懂php中0,"",null和false之间的区别,这些区别有时会影响到数据判断的正确性和安全性,给程序的测试运行造成很多麻烦。
先看一个例子:

<?

$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_uchartype;这样的成员变量,他是用来保存变量的类型的,而空字符串的类型是string,NULL的类型是NULL,false是boolean。

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

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

function eq($v1,$v2) {
if($v1 == $v2&&gettype($v1) ==gettype($v2)) {
return 1;
} else {
return 0;
}
}

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

注意:

NULL是一种特殊的类型.
两种情况下为NULL
1. $var = NULL;
2. $var;

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

转载于:https://www.cnblogs.com/blibli/p/7569566.html

php中NULL、false、0、 有何区别?相关推荐

  1. C++中null与0的区别

    0是一个数字,本身有着一些原生的特性诸如:起始,没有,正负的分界线,0/1中的0还可以表示否定. NULL用于将指针指定为空指针,也就是说该指针不指向任何对象,不可以对该指针进行解引用,否则系统会报错 ...

  2. sql server 数据库中null 转换为 0

    在开发时遇到一个这样的问题,一张表A中有两个money类型的数据字段,有些值是null, 结果用 select [columnA]-[columnB] from A 得到的结果集中,当[columnA ...

  3. js中null,undefined,false,0,'',[],{}判断方法

    目录 1.数据类型 2.JSON字符串 3.数字类型 4.非的布尔值 5.与非比较 一.单独判断 1.null 2.undefined 3.0 4."" 5.判断undefined ...

  4. js基础中Null、undefined、NaN、false、0、{}的理解及使用

    数据类型: 值类型(基本类型):字符串(String).数字(Number).布尔(Boolean).对空(Null).未定义(Undefined).Symbol. 引用数据类型:对象(Object) ...

  5. Javascript 中的false、0、null、undefined和空字符串对象

    typeof类型检测 我们下来看看他们的类型分别是什么: alert(typeof(false) === 'boolean');//truealert(typeof(0) === 'number'); ...

  6. intval0.57100 php_php中0,'',null,false,true,FLASE,TREU,array()的相等恒等学习

    //比较值 '' NULL 0 false true FALSE TRUE //相等判断 //'' == NULL == 0 == false (相等) //array() = 0 == NULL = ...

  7. c语言stdio中null的值,C/C++编程笔记:C语言NULL值和数字 0 值区别及NULL详解

    原创 程序员无言 2020-07-01 在学习C语言的时候,我们常常会碰到C语言NULL值和数字 0 ,很多小伙伴搞不清楚他们之间的一个区别,今天我们就了解一下他们之间的区别,一起来看看吧! 先看下面 ...

  8. mysql null 0 空_MySQL中 null与not null和null与空值''的区别

    相信很多用了MySQL很久的人,对这两个字段属性的概念还不是很清楚,一般会有以下疑问: 1.字段类型是not null,为什么可以插入空值? 2.为什么not null的效率比null高? 3.判断字 ...

  9. js 中 true == 1 false == 0

    在es5中,处理true == 1 和 false == 0 的判断流程是这样的: 如果比较的两者中有boolean,会把 boolean 先转换为对应的 number,即 0 和 1(false是0 ...

最新文章

  1. Java网络编程基础(七)— RMI分布式网络编程
  2. Ubuntu上五款搜索工具:Albert、Synapse、Utools、Ulauncher、FSearch
  3. 【 Verilog HDL 】HDL的三种描述方式
  4. Java解析html页面,获取想要的元素
  5. Opengl-光照-基本光照-冯氏(千万好好理解后面所有的延伸基本都是基于这个的)
  6. GNU make manual 翻译(四十)
  7. Spark _17 _SparkShuffle、HashShuffleManager、SortShuffleManager
  8. 直接在script里面换样式IE6,7,8不兼容
  9. junit rule_Tomcat上下文JUnit @Rule
  10. Oracle 9i 的安装(图解)
  11. Careercup | Chapter 3
  12. oracle一对多个值,Oracle一张表中实现对一个字段不同值和总值的统计(多个count)...
  13. 1.6 logistic回归的keras实现
  14. html登录注册页面验证代码,登录注册页面验证码问题
  15. 越狱团队否认收钱并中止与太极合作
  16. nginx配置解决跨域问题
  17. python中 and 和 or 操作的返回值。
  18. andorid 访问不到smms图片
  19. Educational Codeforces Round 61 (Rated for Div. 2)(A、B、C、D、E、F)
  20. Uncaught ReferenceError: regeneratorRuntime is not defined 解决方法

热门文章

  1. 【JavaScript】重温Javascript继承机制
  2. activiti 常见问题总结
  3. [django]list_display 中包含外键内的字段
  4. OFBiz + Opentaps 目录管理 六. 产品目录
  5. Entity Framework 学习总结之三:架构组成介绍
  6. Tokenisation word segmentation sentence segmentation
  7. 雄安新区区块链底层系统(1.0)今日正式发布
  8. SAP License:共享服务的今天和明天
  9. 反欺诈埋点的这些页面,风控人都应知悉
  10. for for..in语句的基本结构 常用的内置对象和内置放法