php中NULL、false、0、 有何区别?
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;
转载于:https://www.cnblogs.com/blibli/p/7569566.html
php中NULL、false、0、 有何区别?相关推荐
- C++中null与0的区别
0是一个数字,本身有着一些原生的特性诸如:起始,没有,正负的分界线,0/1中的0还可以表示否定. NULL用于将指针指定为空指针,也就是说该指针不指向任何对象,不可以对该指针进行解引用,否则系统会报错 ...
- sql server 数据库中null 转换为 0
在开发时遇到一个这样的问题,一张表A中有两个money类型的数据字段,有些值是null, 结果用 select [columnA]-[columnB] from A 得到的结果集中,当[columnA ...
- js中null,undefined,false,0,'',[],{}判断方法
目录 1.数据类型 2.JSON字符串 3.数字类型 4.非的布尔值 5.与非比较 一.单独判断 1.null 2.undefined 3.0 4."" 5.判断undefined ...
- js基础中Null、undefined、NaN、false、0、{}的理解及使用
数据类型: 值类型(基本类型):字符串(String).数字(Number).布尔(Boolean).对空(Null).未定义(Undefined).Symbol. 引用数据类型:对象(Object) ...
- Javascript 中的false、0、null、undefined和空字符串对象
typeof类型检测 我们下来看看他们的类型分别是什么: alert(typeof(false) === 'boolean');//truealert(typeof(0) === 'number'); ...
- intval0.57100 php_php中0,'',null,false,true,FLASE,TREU,array()的相等恒等学习
//比较值 '' NULL 0 false true FALSE TRUE //相等判断 //'' == NULL == 0 == false (相等) //array() = 0 == NULL = ...
- c语言stdio中null的值,C/C++编程笔记:C语言NULL值和数字 0 值区别及NULL详解
原创 程序员无言 2020-07-01 在学习C语言的时候,我们常常会碰到C语言NULL值和数字 0 ,很多小伙伴搞不清楚他们之间的一个区别,今天我们就了解一下他们之间的区别,一起来看看吧! 先看下面 ...
- mysql null 0 空_MySQL中 null与not null和null与空值''的区别
相信很多用了MySQL很久的人,对这两个字段属性的概念还不是很清楚,一般会有以下疑问: 1.字段类型是not null,为什么可以插入空值? 2.为什么not null的效率比null高? 3.判断字 ...
- js 中 true == 1 false == 0
在es5中,处理true == 1 和 false == 0 的判断流程是这样的: 如果比较的两者中有boolean,会把 boolean 先转换为对应的 number,即 0 和 1(false是0 ...
最新文章
- Java网络编程基础(七)— RMI分布式网络编程
- Ubuntu上五款搜索工具:Albert、Synapse、Utools、Ulauncher、FSearch
- 【 Verilog HDL 】HDL的三种描述方式
- Java解析html页面,获取想要的元素
- Opengl-光照-基本光照-冯氏(千万好好理解后面所有的延伸基本都是基于这个的)
- GNU make manual 翻译(四十)
- Spark _17 _SparkShuffle、HashShuffleManager、SortShuffleManager
- 直接在script里面换样式IE6,7,8不兼容
- junit rule_Tomcat上下文JUnit @Rule
- Oracle 9i 的安装(图解)
- Careercup | Chapter 3
- oracle一对多个值,Oracle一张表中实现对一个字段不同值和总值的统计(多个count)...
- 1.6 logistic回归的keras实现
- html登录注册页面验证代码,登录注册页面验证码问题
- 越狱团队否认收钱并中止与太极合作
- nginx配置解决跨域问题
- python中 and 和 or 操作的返回值。
- andorid 访问不到smms图片
- Educational Codeforces Round 61 (Rated for Div. 2)(A、B、C、D、E、F)
- Uncaught ReferenceError: regeneratorRuntime is not defined 解决方法
热门文章
- 【JavaScript】重温Javascript继承机制
- activiti 常见问题总结
- [django]list_display 中包含外键内的字段
- OFBiz + Opentaps 目录管理 六. 产品目录
- Entity Framework 学习总结之三:架构组成介绍
- Tokenisation word segmentation sentence segmentation
- 雄安新区区块链底层系统(1.0)今日正式发布
- SAP License:共享服务的今天和明天
- 反欺诈埋点的这些页面,风控人都应知悉
- for for..in语句的基本结构 常用的内置对象和内置放法