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


Posted in PHP onSeptember 25, 2012

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

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

// 判断 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 "";

输出的结果是:

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

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

点击下载相关源代码

PHP 相关文章推荐
php下利用curl判断远程文件是否存在的实现代码
Oct 08 PHP
PHP 读取Postgresql中的数组
Apr 14 PHP
利用phpexcel把excel导入数据库和数据库导出excel实现
Jan 09 PHP
php实现RSA加密类实例
Mar 26 PHP
PHP编写RESTful接口的方法
Feb 21 PHP
php自动载入类用法实例分析
Jun 24 PHP
php str_replace替换指定次数的方法详解
May 05 PHP
自制PHP框架之设计模式
May 07 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
Jun 27 PHP
PHP获取数组中指定的一列实例
Dec 27 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
Nov 23 PHP
PHPStorm2020.1永久激活及下载更新至2020(推荐)
Sep 25 PHP
PHP获取网址的顶级域名函数代码
Sep 24 #PHP
ThinkPHP关联模型操作实例分析
Sep 23 #PHP
Linux下CoreSeek及PHP扩展模块的安装
Sep 23 #PHP
Thinkphp模板中使用自定义函数的方法
Sep 23 #PHP
如何获知PHP程序占用多少内存(memory_get_usage)
Sep 23 #PHP
PHP管理内存函数 memory_get_usage()使用介绍
Sep 23 #PHP
查找mysql字段中固定字符串并替换的几个方法
Sep 23 #PHP
You might like
《忧国的莫里亚蒂》先导宣传图与STAFF公开
2020/03/04 日漫
php相对当前文件include其它文件的方法
2015/03/13 PHP
使用phpexcel类实现excel导入mysql数据库功能(实例代码)
2016/05/12 PHP
用Javascript做flash做的事..才完成的一个类.Auntion Action var 0.1
2007/02/23 Javascript
兼容ie和firefox js关闭代码
2008/12/11 Javascript
Ajax异步提交表单数据的说明及方法实例
2013/06/22 Javascript
js 将json字符串转换为json对象的方法解析
2013/11/13 Javascript
jquery如何扑捉回车键触发的事件
2014/04/24 Javascript
解决ueditor jquery javascript 取值问题
2014/12/30 Javascript
推荐10 款 SVG 动画的 JavaScript 库
2015/03/24 Javascript
JavaScript中的splice()方法使用详解
2015/06/09 Javascript
JS实现点击上移下移LI行数据的方法
2015/08/05 Javascript
js实现网页抽奖实例
2015/08/05 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
2016/10/31 Javascript
浅谈javascript中执行环境(作用域)与作用域链
2016/12/08 Javascript
jquery中each循环的简单回滚操作
2017/05/05 jQuery
vue.js todolist实现代码
2017/10/29 Javascript
Angular 4.x+Ionic3踩坑之Ionic 3.x界面传值详解
2018/03/13 Javascript
深入浅析AngularJs模版与v-bind
2018/07/06 Javascript
深入理解JS中Number(),parseInt(),parseFloat()三者比较
2018/08/24 Javascript
使用webpack4编译并压缩ES6代码的方法示例
2019/04/24 Javascript
NodeJs实现简易WEB上传下载服务器
2019/08/10 NodeJs
[01:42]辉夜杯战队访谈宣传片—FANTUAN
2015/12/25 DOTA
Python Sleep休眠函数使用简单实例
2015/02/02 Python
python通过文件头判断文件类型
2015/10/30 Python
将python代码和注释分离的方法
2018/04/21 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
2019/08/23 Python
Python中的全局变量如何理解
2020/06/04 Python
CSS3实现文字描边的2种方法(小结)
2020/02/14 HTML / CSS
Marriott中国:万豪国际酒店查询预订
2016/09/02 全球购物
介绍一下SQL Server的全文索引
2013/08/15 面试题
挂职思想汇报
2013/12/31 职场文书
幼儿园毕业园长感言
2014/02/24 职场文书
专升本学生毕业自我鉴定
2014/10/04 职场文书
信息合作协议书
2014/10/09 职场文书
主题班会开场白
2015/06/01 职场文书