php中很多人还不懂php中 0 , '' , nullfalse 之间的区别,这些区别有时会影响到数据判断的正确性和安全性,给程序的测试运行造成很多麻烦。另外在面试题中也会遇到这些问题,如下:

<?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是值相等而类型不一样!

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

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

文章参考自:http://blog.sina.com.cn/s/blog_4832ea590101cf7b.html

转载于:https://www.cnblogs.com/zswordsman/p/5824175.html

PHP中0、空、null和false的总结相关推荐

  1. php中0与NULL,False,“0”,\0的区别

    先说明一下结论:0与NULL,False,"0","\0"的值相同,都以0存储,但是类型不同, 再看一段实验代码: <?php $test=0; if($ ...

  2. C++11中0与 NULL与nullptr之间的关系

    1.从本质上1) 0是int型的字面值常量2) NULL 是预处理变量,定义在 cstdlib 中,其值是03) nullptr 是 nullptr_t 类型的字面值. 2.cstdlib 中 NUL ...

  3. JS 中 0/1 与 true/false 是否相等

    不得不说自己问了个蠢问题... 但能意识到自己不会的问题是个好事 首先,你要先了解"==" 和 " === "的区别 当用" == "判断 ...

  4. php中NULL、false、0、 有何区别?

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

  5. php中0, ,null和false的区别

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

  6. 漫 谈oracle 中 的 空 值

    在 数 据 库 中, 空 值 用 来 表 示 实 际 值 未 知 或 无 意 义 的 情 况. 在 一 个 表 中, 如 果 一 行 中 的 某 列 没 有 值, 那 么 就 称 它 为 空 值(NU ...

  7. oracle表里面空值要填满,漫 谈oracle 中 的 空 值(转)

    漫 谈oracle 中 的 空 值 河 北 省 统 计 局 贾 书 民 ---- 在 数 据 库 中, 空 值 用 来 表 示 实 际 值 未 知 或 无 意 义 的 情 况. 在 一 个 表 中, ...

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

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

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

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

最新文章

  1. oracle画圆,元宵佳节:看Oracle技术粉们用SQL画团圆
  2. poj 3660 传递闭包 **
  3. React之props的简写方式和报错示范
  4. 分类信息网站源码_分类信息网站如何增加搜索引收录
  5. Arm公布2019年物联网领域五大预测:智能家居、智慧城市、医疗保健上榜
  6. 配置 AEM CQ6 (author + publish + apache dispatcher + ubuntu )
  7. php 二维数组根据键值合并二维数组_3分钟短文 | PHP 根据值移除数组元素,哪个方法最简单?...
  8. 自学python考哪些证书-学python需要考证吗?考证有什么好处?
  9. 11 旋转数组的最小数字
  10. Redis系列八:redis主从复制和哨兵
  11. g729语音编码 matlab,Case7 FreeSwitch配置开启转码功能及安装G729语音编码
  12. 分片和分区的概念及区别
  13. ASP.NET农历时间显示(两)
  14. Compose 跨平台的现状
  15. KAMA-库夫曼自适应移动均线
  16. unity 全息和xRay shader
  17. Python二手车价格预测(二)—— 模型训练及可视化
  18. main c语言中变量的定义,C语言中在main函数中定义的变量是全局变量么_后端开发...
  19. python千年虫问题enumerate函数
  20. echarts3.x,echarts5.x 的wordCloud兼容

热门文章

  1. PhoneGap学习笔记(一) 框架搭建
  2. C#从入门到精通视频教程(2009年最新)- 视频列表
  3. (01)FPGA时序分析概念
  4. QT编译boost库
  5. c++ log函数_高斯拉普拉斯算子(Laplacian of Gaussian, LoG)
  6. 【蓝桥杯嵌入式】【STM32】10_InputCaputer之输入捕获
  7. Linux 视频设备驱动V4L2最常用的控制命令使用说明(1.02)
  8. Python学习-将list列表写入文件并读取方法汇总
  9. ROS 教程之 navigation : 用 move_base 控制自己的机器人(1)
  10. android mtk平台的fm停止搜索,【MTK平台,手机工程模式知识及方法详解】