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 相关文章推荐
将OICQ数据转成MYSQL数据
Oct 09 PHP
ThinkPHP关联模型操作实例分析
Sep 23 PHP
解析yahoo邮件用phpmailer发送的实例
Jun 24 PHP
ThinkPHP查询语句与关联查询用法实例
Nov 01 PHP
windows中为php安装mongodb与memcache
Jan 06 PHP
javascript+php实现根据用户时区显示当地时间的方法
Mar 11 PHP
PHP使用PHPExcel删除Excel单元格指定列的方法
Jul 06 PHP
Yii隐藏URL中index.php的方法
Jul 12 PHP
php基于websocket搭建简易聊天室实践
Oct 24 PHP
php实现文件预览功能
May 23 PHP
PHP实现的XXTEA加密解密算法示例
Aug 28 PHP
php用wangeditor3实现图片上传功能
Aug 22 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
支持oicq头像的留言簿(二)
2006/10/09 PHP
PHP四大安全策略
2014/03/12 PHP
php通过array_merge()函数合并关联和非关联数组的方法
2015/03/18 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
js 鼠标点击事件及其它捕获
2009/06/04 Javascript
最简单的jQuery程序 入门者学习
2009/07/09 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
2014/05/11 Javascript
js实现DOM走马灯特效的方法
2015/01/21 Javascript
jQuery获取及设置表单input各种类型值的方法小结
2016/05/24 Javascript
详解微信小程序——自定义圆形进度条
2016/12/29 Javascript
移动端web滚动分页的实现方法
2017/05/05 Javascript
bing Map 在vue项目中的使用详解
2018/04/09 Javascript
在Vue 中使用Typescript的示例代码
2018/09/10 Javascript
vue使用自定义事件的表单输入组件用法详解【日期组件与货币组件】
2020/06/01 Javascript
jQuery插件实现图片轮播效果
2020/10/19 jQuery
利用node.js开发cli的完整步骤
2020/12/29 Javascript
[59:08]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第一局
2016/02/27 DOTA
Python自定义类的数组排序实现代码
2016/08/28 Python
Python下的Softmax回归函数的实现方法(推荐)
2017/01/26 Python
Python多进程multiprocessing、进程池用法实例分析
2020/03/24 Python
基于python tkinter的点名小程序功能的实例代码
2020/08/22 Python
Python中猜拳游戏与猜筛子游戏的实现方法
2020/09/04 Python
ESDlife健康生活易:身体检查预订、搜寻及比较
2019/05/10 全球购物
新加坡网上美容店:Hermo新加坡
2019/06/19 全球购物
法国购买隐形眼镜和眼镜网站:Optical Center
2019/10/08 全球购物
请说出几个常用的异常类
2013/01/08 面试题
幼儿园义卖活动方案
2014/01/17 职场文书
个人廉洁自律承诺书
2014/03/27 职场文书
授权委托书(完整版)
2014/09/10 职场文书
涉及车辆房产分割的离婚协议书范文
2014/10/12 职场文书
人事专员岗位职责
2015/02/03 职场文书
环境建议书
2015/02/04 职场文书
2015年初一班主任工作总结
2015/05/13 职场文书
幼儿园大班开学寄语(2016秋季)
2015/12/03 职场文书
创业计划书之川味火锅店
2019/09/02 职场文书
Nginx解决前端访问资源跨域问题的方法详解
2021/03/31 Servers