php中0,null,empty,空,false,字符串关系的详细介绍


Posted in PHP onJune 20, 2013

在一个项目中遇到了一个奇怪的问题,耗费了我不少时间都没有解决,最终调试发现是判断的问题—-关于0和 ‘ ‘ (空单引号,为好看清我加了个空格)的判断,我发现 0==” 居然成立,郁闷的同时决定写个简单页面测试,发誓要将0,null,empty,空,false的关系搞的一清二楚。因为这很可能在一些关键地方使我们编写的程序,网站存在bug。特别是可能影响到登陆等特殊地方的安全性和逻辑正确性,虽然这是很基础的知识点,但很多人,包括一些高手都可能对0,null,empty,空,false的关系很模糊。所以自己动手做一个测试还是很需要的。
php程序代码:

<?php
//========= 判断 0 和 '' 以及 empty null false的关系 start =========//
if('safdasefasefasf'==0){
 echo "该字符串转换为数字  等于 0 <br/>";
}//output:该字符串转换为数字 等于零。
 这是关键的一个例子
手册上有解释:该值由字符串最前面的部分决定。如果字符串以合法的数字数据开始,就用该数字作为其值,否则其值为 0(零)。  
也就是说 '3asfdf'==3 ; 'adsfasdf'==0 相当要注意
$a=0;
if($a==''){
 echo "0  等于  '' <br/>";
}    //output:0 等于''
if(trim($a)==''){
 echo "trim(0)等于'' <br/>";
}    //no outputif($a===''){
 echo "0==='' <br/>";
}    //no output
if(empty($a)){
 echo "'' is empty <br/>";
}   //output:'' is empty
if(is_null($a)){
 echo "0 is null <br/>";
}   //no output
if(is_numeric($a)){
 echo "0 is numeric <br/>";
}   //output:0 is numeric
if(is_string($a)){
 echo "0 is string <br/>";
}   //no output
if(strval($a)==''){
 echo "转换成字符串的0 is '' <br/>";
}   //no output
//========= 判断 0 和 '' 以及 empty null false的关系 end =========//
//========= 判断 '' 和 0 以及 empty null false的关系 start =========//
$b = '';
if($b==0){
 echo "''  等于  0 <br/>";
}    //output:''  等于  0
if(!''){
 echo "'' 就是false <br/>";
}    //output:'' 就是false
if(!0){
 echo "0 就是false <br/>";
}    //output:0 就是false
//========= 判断 '' 和 0 以及 empty null false的关系 end =========//
echo "在判断空('')的时候一定要小心,0 也相当于'' ,0  和 '' 都相当于空字符和false,判断为空最好用===";
?>

输出的结果是: 0 等于 ” ” is empty 0 is numeric ” 等于 0 ” 就是false 0 就是false 在判断空(”)的时候一定要小心,0 也相当于” ,0 和 ” 都相当于空字符和false,判断为空最好用=== 只能这样解释:0 也相当于 ” ,0  和 ” 都相当于空字符和false
在判断空(”)的时候一定要小心,0 也相当于 ” ,0  和 ” 都相当于空字符和false,判断为空最好用===;
PHP 相关文章推荐
phpBB BBcode处理的漏洞
Oct 09 PHP
轻松修复Discuz!数据库
May 03 PHP
查找mysql字段中固定字符串并替换的几个方法
Sep 23 PHP
php无限极分类实现的两种解决方法
Apr 28 PHP
PHP设计模式之代理模式的深入解析
Jun 13 PHP
php验证邮箱和ip地址最简单方法汇总
Oct 30 PHP
php结合web uploader插件实现分片上传文件
May 10 PHP
php连接微软MSSQL(sql server)完全攻略
Nov 27 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
May 05 PHP
PHP实现的简单路由和类自动加载功能
Mar 13 PHP
PHP实现的mysql读写分离操作示例
May 22 PHP
php源码的使用方法讲解
Sep 26 PHP
解析PHP中数组元素升序、降序以及重新排序的函数
Jun 20 #PHP
解析php中的fopen()函数用打开文件模式说明
Jun 20 #PHP
深入解析PHP内存管理之谁动了我的内存
Jun 20 #PHP
解析php中die(),exit(),return的区别
Jun 20 #PHP
有关PHP性能优化的介绍
Jun 20 #PHP
数组与类使用PHP的可变变量名需要的注意的问题
Jun 20 #PHP
解析使用ThinkPHP应该掌握的调试手段
Jun 20 #PHP
You might like
超级简单的发送邮件程序
2006/10/09 PHP
php中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
简单的php文件上传(实例)
2013/10/27 PHP
PHPer 需要了解的 5 个 Composer 小技巧
2014/08/18 PHP
微信公众平台实现获取用户OpenID的方法
2015/04/15 PHP
PHP的Yii框架中过滤器相关的使用总结
2016/03/29 PHP
PHP5.5新特性之yield理解与用法实例分析
2019/01/11 PHP
php实现多站点共用session实现单点登录的方法详解
2019/09/18 PHP
php实现微信小程序授权登录功能(实现流程)
2019/11/13 PHP
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
2010/04/14 Javascript
基于JQuery的一句代码实现表格的简单筛选
2010/07/26 Javascript
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
2013/02/05 Javascript
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
2013/08/19 Javascript
xtemplate node.js 的使用方法实例解析
2016/08/22 Javascript
微信小程序 wx.request(OBJECT)发起请求详解
2016/10/13 Javascript
浅谈jquery之on()绑定事件和off()解除绑定事件
2016/10/26 Javascript
收藏AngularJS中最重要的核心功能
2017/07/09 Javascript
详解刷新页面vuex数据不消失和不跳转页面的解决
2018/01/30 Javascript
在 Vue 中编写 SVG 图标组件的方法
2020/02/24 Javascript
vue抽出组件并传值实例
2020/07/31 Javascript
[40:10]2015国际邀请赛全明星表演赛
2015/08/07 DOTA
详解python数据结构和算法
2019/04/18 Python
python读取tif图片时保留其16bit的编码格式实例
2020/01/13 Python
浅谈keras的深度模型训练过程及结果记录方式
2020/01/24 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
2020/02/23 Python
python中for in的用法详解
2020/04/17 Python
Python decimal模块使用方法详解
2020/06/08 Python
详解vscode实现远程linux服务器上Python开发
2020/11/10 Python
档案接收函范文
2014/01/10 职场文书
检察官就职演讲稿
2014/01/13 职场文书
护理专科自荐书范文
2014/02/18 职场文书
团党委领导干部党的群众路线教育实践活动个人对照检查材料思想汇
2014/10/05 职场文书
刑事上诉状范文
2015/05/22 职场文书
雷锋的观后感
2015/06/10 职场文书
《植物妈妈有办法》教学反思
2016/02/23 职场文书
导游词之山东八大关
2019/12/18 职场文书