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 相关文章推荐
站长助手-网站web在线管理程序 v1.0 下载
May 12 PHP
发布一个迷你php+AJAX聊天程序[聊天室]提供下载
Jul 21 PHP
PHP 高级课程笔记 面向对象
Jun 21 PHP
PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
Dec 28 PHP
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
Sep 23 PHP
PHP的Socket网络编程入门指引
Aug 11 PHP
php 流程控制switch的简单实例
Jun 07 PHP
php获取指定数量随机字符串的方法
Feb 06 PHP
使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例
Sep 15 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
Apr 02 PHP
如何在Laravel之外使用illuminate组件详解
Sep 20 PHP
一次项目中Thinkphp绕过禁用函数的实战记录
Nov 17 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
法国:浪漫之都的咖啡文化
2021/03/03 咖啡文化
调试一段PHP程序时遇到的三个问题
2012/01/17 PHP
PHP+Ajax实时自动检测是否联网的方法
2015/07/01 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
2021/03/09 PHP
Javascript注入技巧
2007/06/22 Javascript
Jquery 插件开发笔记整理
2011/01/17 Javascript
jQuery对象数据缓存Cache原理及jQuery.data方法区别介绍
2013/04/07 Javascript
浅析javascript中function 的 length 属性
2014/05/27 Javascript
Node.js插件的正确编写方式
2014/08/03 Javascript
javascript实现回到顶部特效
2015/05/06 Javascript
基于jQuery实现文本框只能输入数字(小数、整数)
2016/01/14 Javascript
jsTree使用记录实例
2016/12/01 Javascript
浅谈ECMAScript6新特性之let、const
2017/08/02 Javascript
一个Vue视频媒体多段裁剪组件的实现示例
2018/08/09 Javascript
vuex actions传递多参数的处理方法
2018/09/18 Javascript
Vue中的Props(不可变状态)
2018/09/29 Javascript
详解基于Vue的支持数据双向绑定的select组件
2019/09/02 Javascript
python中的闭包用法实例详解
2015/05/05 Python
彻底搞懂Python字符编码
2018/01/23 Python
Python利用itchat库向好友或者公众号发消息的实例
2019/02/21 Python
Python ADF 单位根检验 如何查看结果的实现
2020/06/03 Python
利用 CSS3 实现的无缝轮播功能代码
2017/09/25 HTML / CSS
如何使用canvas绘制可移动网格的示例代码
2020/12/14 HTML / CSS
奥地利婴儿用品和玩具购物网站:baby-markt.at
2020/01/26 全球购物
夜大毕业生自我鉴定
2013/10/31 职场文书
前台文员我鉴定
2014/01/12 职场文书
四年级语文教学反思
2014/02/05 职场文书
12岁生日演讲稿
2014/05/14 职场文书
装饰工程师岗位职责
2014/06/08 职场文书
青奥会口号
2014/06/12 职场文书
工程索赔意向书
2014/08/30 职场文书
迎新生标语大全
2014/10/06 职场文书
redis配置文件中常用配置详解
2021/04/14 Redis
nginx服务器的下载安装与使用详解
2021/08/02 Servers