空字符串(''),NULL和0的关系
来源:互联网 发布:同步助手java 编辑:程序博客网 时间:2024/05/16 12:24
应该很多人都还没有认清空字符串('')和NULL的关系吧!!现在我来说明一下吧:
先看一个例子:
'' == NULL;
'' === NULL;
运行之后会发现第一个为true,第二个为false!
为什么会这样呢?其实在PHP中空字符串和NULL都是以值为0存储的!而==只比较值,所以第一个为true!但是第二个为什么是false呢!?
原因是在PHP中变量是以C语言的结构体来存储的,其中这个结构体有个zend_uchar type;这样的成员变量,他是用来保存变量的类型的,而空字符串的类型是string而NULL的类型是NULL。这一点可以用echo gettype('');和echo gettype(NULL);来打印看看!而===运算符是不单比较值,还有比较类型的,所以第二个为false!
所以可以这样说===是等于下面的函数:
[php]
function eq($var1, $var2) {
if($var1 == $var2 && gettype($var1) == gettype($var2)) {
return 1;
} else {
return 0;
}
}
[/php]
所以空字符串(''),NULL和0是值相等而类型不一样!
先看一个例子:
'' == NULL;
'' === NULL;
运行之后会发现第一个为true,第二个为false!
为什么会这样呢?其实在PHP中空字符串和NULL都是以值为0存储的!而==只比较值,所以第一个为true!但是第二个为什么是false呢!?
原因是在PHP中变量是以C语言的结构体来存储的,其中这个结构体有个zend_uchar type;这样的成员变量,他是用来保存变量的类型的,而空字符串的类型是string而NULL的类型是NULL。这一点可以用echo gettype('');和echo gettype(NULL);来打印看看!而===运算符是不单比较值,还有比较类型的,所以第二个为false!
所以可以这样说===是等于下面的函数:
[php]
function eq($var1, $var2) {
if($var1 == $var2 && gettype($var1) == gettype($var2)) {
return 1;
} else {
return 0;
}
}
[/php]
所以空字符串(''),NULL和0是值相等而类型不一样!
- 空字符串(''),NULL和0的关系
- NULL,空字符串和"\0"
- 空指针和0、NULL之间的关系
- NULL字符串和空字符串的区别
- NULL和空字符串的布尔值
- oracle 的 null 和 空字符串('')
- oracle 的 null 和 空字符串('')
- oracle 的 null 和 空字符串('')
- Java空字符串和null的区别
- java--空字符串""和null的区别
- Null、Nothing和字符串空的区别
- Java-空字符串""和null的区别
- null 和 空字符串的不同
- php中0,null,empty,空,false,字符串关系详解
- php 0,null,empty,空,false,字符串关系
- php中0,null,empty,空,false,字符串关系详解
- php中0,null,empty,空,false,字符串关系的详细介绍
- NULL、空格串、空字符串、0的区别和NULL详解及拓展
- PHP 中获取文件名及路径
- MySql视图
- MultiByteToWideChar函数
- HTML入门教程 - 9.关于图片(Images)
- 利用Marshal 进行深拷贝
- 空字符串(''),NULL和0的关系
- initialization of 'XXX' is skipped by 'case' label 原因及解决办法
- drupal显示摘要版本
- xp下安装centOS6.0出现问题 求解答
- c++链接数据库测试,中文有问题
- STP协议
- HDU 3853
- hdu 2824 The Euler function(欧拉函数)
- IOS 判断应用版本和升级提示