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中redis的用法深入解析
Feb 20 PHP
php获取网卡的MAC地址支持WIN/LINUX系统
Apr 30 PHP
ThinkPHP之A方法实例讲解
Jun 20 PHP
Yii入门教程之目录结构、入口文件及路由设置
Nov 25 PHP
php5.3不能连接mssql数据库的解决方法
Dec 27 PHP
php使用cookie实现记住登录状态
Apr 27 PHP
PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法
Nov 11 PHP
Yii统计不同类型邮箱数量的方法
Oct 18 PHP
php加密之discuz内容经典加密方式实例详解
Feb 04 PHP
php检测mysql表是否存在的方法小结
Jul 20 PHP
实例分析PHP中PHPMailer发邮件
Dec 13 PHP
php慢查询日志和错误日志使用详解
Feb 27 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
多文件上载系统完整版
2006/10/09 PHP
PHP优于Node.js的五大理由分享
2012/09/15 PHP
PDO版本问题 Invalid parameter number: no parameters were bound
2013/01/06 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
2015/12/09 PHP
php基于PDO连接MSSQL示例DEMO
2016/07/13 PHP
php加密解密字符串示例
2016/10/13 PHP
php判断是否为ajax请求的方法
2016/11/29 PHP
php+ajax实现文件切割上传功能示例
2020/03/03 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
2020/10/27 PHP
javaScript 简单验证代码(用户名,密码,邮箱)
2009/09/28 Javascript
不一样的文字闪烁 轮番闪烁
2009/11/11 Javascript
一个轻量级的javascript库 pj介绍
2010/12/19 Javascript
jquery阻止后续事件只执行第一个事件
2014/07/24 Javascript
Javascript实现代码折叠功能
2016/08/25 Javascript
利用jQuery的动画函数animate实现豌豆发射效果
2016/08/28 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
2016/09/19 Javascript
Jqprint实现页面打印
2017/01/06 Javascript
实例解析js中try、catch、finally的执行规则
2017/02/24 Javascript
微信小程序开发animation心跳动画效果
2017/08/16 Javascript
vue学习之mintui picker选择器实现省市二级联动示例
2017/10/12 Javascript
详解vue静态资源打包中的坑与解决方案
2018/02/05 Javascript
vue内置指令详解
2018/04/03 Javascript
highCharts提示框中显示当前时间的方法
2019/01/18 Javascript
python矩阵转换为一维数组的实例
2018/06/05 Python
Python简单计算给定某一年的某一天是星期几示例
2018/06/27 Python
对python的bytes类型数据split分割切片方法
2018/12/04 Python
python样条插值的实现代码
2018/12/17 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
Python视频编辑库MoviePy的使用
2020/04/01 Python
tensorflow常用函数API介绍
2020/04/19 Python
使用Keras实现简单线性回归模型操作
2020/06/12 Python
Python中读取文件名中的数字的实例详解
2020/12/25 Python
2014年职称评定工作总结
2014/11/26 职场文书
vue中利用mqtt服务端实现即时通讯的步骤记录
2021/07/01 Vue.js
深入理解 Golang 的字符串
2022/05/04 Golang