PHP中空字符串介绍0、null、empty和false之间的关系

作者: 字体:[增加 减小] 类型:转载 时间:2012-09-25
 
用PHP开发那么久,PHP中空字符串、0、null、empty和false之间的关系总是有些不确定的东西。遇到它们应该用哪个方法函数去处理
 

如果用错方法函数或是用少了,如果几个方法函数的逻辑顺序错了,很可能就是一个漏洞,而且不容易找出来。纠结啊~

上网找找看哪位高人有总结出相关的结论出来,果然有!不过似乎不是很全面,我在这里稍完善了一下,仅供参考。

复制代码代码如下:
// 判断 0 与 ''、null、empty、false 之间的关系 
$a = 0; 
echo "0 与 ''、 empty、null、false 之间的关系:"; 
if($a == ''){ 
echo "0 == '';"; 
}else{ 
echo "0 != '';"; 

if(trim($a) == ''){ 
echo "trim(0) == '';"; 
}else{ 
echo "trim(0) != '';"; 

if(strval($a) == ''){ 
echo "strval(0) == '';"; 
}else{ 
echo "strval(0) != '';"; 

if($a === ''){ 
echo "0 === '';"; 
}else{ 
echo "0 !=== '';"; 

if(empty($a)){ 
echo "0 is empty;"; 
}else{ 
echo "0 is not empty;"; 

if(is_null($a)){ 
echo "0 is null;"; 
}else{ 
echo "0 is not null;"; 

if(is_numeric($a)){ 
echo "0 is numeric;"; 
}else{ 
echo "0 is not numeric;"; 

if(is_string($a)){ 
echo "0 is string;"; 
}else{ 
echo "0 is not string;"; 

if(!$a){ 
echo "0 is false;"; 
}else{ 
echo "0 is not false;"; 

// 判断 '' 和 0、null、empty、false 之间的关系 
$a = ''; 
echo "'' 和 0、empty、null、false 之间的关系:"; 
if($a == 0){ 
echo "'' == 0;"; 
}else{ 
echo "'' != 0;"; 

if(intval($a) == 0){ 
echo "intval('') == 0;"; 
}else{ 
echo "intval('') != 0;"; 

if(empty($a)){ 
echo "'' is empty;"; 
}else{ 
echo "'' is not empty;"; 

if(is_null($a)){ 
echo "'' is null;"; 
}else{ 
echo "'' is not null;"; 

if(is_numeric($a)){ 
echo "'' is numeric;"; 
}else{ 
echo "'' is not numeric;"; 

if(is_string($a)){ 
echo "'' is string;"; 
}else{ 
echo "'' is not string;"; 

if(!$a){ 
echo "'' is false;"; 
}else{ 
echo "'' is not false;"; 

// 判断 null 和 ''、0、empty、false 之间的关系 
$a = null; 
echo "null 和 ''、0、empty、false 之间的关系:"; 
if($a == ''){ 
echo "null == '';"; 
}else{ 
echo "null != '';"; 

if($a == 0){ 
echo "null == 0;"; 
}else{ 
echo "null != 0;"; 

if($a === ''){ 
echo "null === '';"; 
}else{ 
echo "null !=== '';"; 

if($a === 0){ 
echo "null === 0;"; 
}else{ 
echo "null !=== 0;"; 

if(strval($a) == ''){ 
echo "strval(null) == '';"; 
}else{ 
echo "strval(null) != '';"; 

if(intval($a) == 0){ 
echo "intval(null) == 0;"; 
}else{ 
echo "intval(null) != 0;"; 

if(empty($a)){ 
echo "null is empty;"; 
}else{ 
echo "null is not empty;"; 

if(is_numeric($a)){ 
echo "null is numeric;"; 
}else{ 
echo "null is not numeric;"; 

if(is_string($a)){ 
echo "null is string;"; 
}else{ 
echo "null is not string;"; 

if(!$a){ 
echo "null is false;"; 
}else{ 
echo "null is not false;"; 

echo ""; 

输出的结果是:

我想根据输出结果都可以清楚了解决空字符串、0、null、empty和false之间的大概关系,在开发过程中灵活运用上述代码里的方法,加上良好的逻辑,基本上应该是不会出现问题的了。

PHP中空字符串介绍0、null、empty和false之间的关系的更多相关文章

  1. PHP 中空字符串介绍0、null、empty和false之间的关系

    0是数字,是empty,是false,不是null,值相当于空字符串,但类型不是字符串,去空格或强制转换为字符串型时不等于空字符串 ""的值相当于0,是empty,是空字符串,是f ...

  2. php 0、null、empty和false之间的关系

    // 判断 0 与 ''.null.empty.false 之间的关系 $a = 0; echo "0 与 ''. empty.null.false 之间的关系:"; if($a ...

  3. php 0,null,empty,空,false,字符串关系(转)

    在php中由于是弱类型语言,不同类型值之间可以隐式转换,使得false,null,”,0,’0′这几个值的比较有些混乱,现总结一下: //相等判断 '' == NULL == 0 == false ( ...

  4. 0,null,empty,空,false,isset

    <?php header("Content-type: text/html; charset=utf-8"); $a=0; //1. if($a==0) { echo $a; ...

  5. PHP中空字符串、0、null、empty和false之间的关系

    原文来自:http://www.seayee.net/article/info_115.html

  6. 关于JavaScript中0、空字符串、'0'是true还是false的总结

    最近被问到关于js中空字符串是true还是false得问题,一时间没想起来,现在在chrome的console面板上输出代码测试一下. "" == false 结果是true    ...

  7. block(代码块)的介绍以及使用方法和变量之间的关系

    http://blog.csdn.net/menxu_work/article/details/8762848 block(代码块)的介绍以及使用方法和变量之间的关系 block(代码块)的介绍以及使 ...

  8. php——字符串的""和null,empty的关系

    public function test(){ $test = ""; if($test==null){ echo "test==null <hr>" ...

  9. 0,null,undefined,[],{},'',false之间的关系

    0与一些虚值的比较: 0与false 0==false true 0与'': =='' true 0与[]: ==[] true 0与NaN: 0==NaN false 0与undefined 0== ...

随机推荐

  1. 不同java 版本的新功能

    Java 5 泛型 自动装箱/拆箱 增强的for 类型安全的枚举 可变参数 静态导入 Annotation Concurrent Package Java 6 Web Service 支持Annota ...

  2. Codeforces 677E Vanya and Balloons(DP + 一些技巧)

    题目大概说给一张地图,地图每个格子都有0到9中的某一个数字.现在要在一个格子放炸弹,炸弹爆炸后水柱有两种扩展方式,一种是上.下.左.右,另一种是左上.右下.右上.左下,且四个方向的长度都一样.问放哪个 ...

  3. 每天一个linux命令---curl

    linux curl是一个利用URL规则在命令行下工作的文件传输工具.详细请参考:http://www.codesky.net/article/201010/170043.html 例如:curl ' ...

  4. 隐式调用 Intent 大全, 很全

    http://ming-fanglin.iteye.com/blog/1061312 //调用浏览器 Uri uri = Uri.parse(""); Intent it  = n ...

  5. ACM zb的生日

    zb的生日 时间限制:3000 ms  |  内存限制:65535 KB 难度:2   描述 今天是阴历七月初五,acm队员zb的生日.zb正在和C小加.never在武汉集训.他想给这两位兄弟买点什么 ...

  6. ACM 无线网络覆盖

    无线网络覆盖 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 我们的乐乐同学对于网络可算得上是情有独钟,他有一个计划,那就是用无线网覆盖郑州大学. 现在学校给了他一个 ...

  7. UVA 10791 - Minimum Sum LCM(坑)

    题目链接 不知道为什么,我用cin,cout就是过不了...改成scanf过了... 还是我居然理解错题意了,已经不能用看错了...至少两个数字,我理解成两个数字了,还写了个爆搜... #includ ...

  8. virtual关键字的本质是什么?

    MSDN上对virtual方法的解释:试着翻译如下 当一个方法声明包含virtual修饰符,这个方法就是虚方法.如果没有virtual修饰符,那么就不是虚方法. 非虚方法的实现是不变的:不管该方法是被 ...

  9. 简单 常用的git命令

    常用的git命令 git pull  获取最新 git add . 提交所有 git commit  -m “我的注释” git status 查看状态 git push origin master ...

  10. man page分類與說明

    轉載自http://itzone.hk/article/article.php?aid=200407152225014657 (如有侵權,請留言或來信告知) 前言 Man page是每位程式設計員及U ...