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 相关文章推荐
substr()函数中文版
Oct 09 PHP
php继承的一个应用
Sep 06 PHP
解析php中如何调用用户自定义函数
Aug 06 PHP
php调用新浪短链接API的方法
Nov 08 PHP
php支付宝接口用法分析
Jan 04 PHP
PHP使用redis实现统计缓存mysql压力的方法
Nov 14 PHP
Joomla简单判断用户是否登录的方法
May 04 PHP
PHPStorm+XDebug进行调试图文教程
Jun 13 PHP
浅谈php处理后端&amp;接口访问超时的解决方法
Oct 29 PHP
php实现异步将远程链接上内容(图片或内容)写到本地的方法
Nov 30 PHP
php lcg_value与mt_rand生成0~1随机小数的效果对比分析
Apr 05 PHP
php curl获取到json对象并转成数组array的方法
May 31 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
咖啡店都有些什么常规豆子呢?有什么风味在里面
2021/03/04 咖啡文化
Ajax+PHP 边学边练之四 表单
2009/11/27 PHP
php源代码安装常见错误与解决办法分享
2013/05/28 PHP
PHP 获取远程文件大小的3种解决方法
2013/07/11 PHP
PHP+Javascript实现在线拍照功能实例
2015/07/18 PHP
PHP多维数组元素操作类的方法
2016/11/14 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
2017/09/26 PHP
为Extjs加加速(javascript加速)
2010/08/19 Javascript
Document对象内容集合(比较全)
2010/09/06 Javascript
3种js实现string的substring方法
2015/11/09 Javascript
基于jQuery实现左右图片轮播(原理通用)
2015/12/24 Javascript
Bootstrap学习笔记之css样式设计(1)
2016/06/07 Javascript
JavaScript实现九九乘法表的简单实例
2016/06/07 Javascript
angular实现form验证实例代码
2017/01/17 Javascript
jQuery中each方法的使用详解
2018/03/18 jQuery
vue组件横向树实现代码
2018/08/02 Javascript
vuejs 制作背景淡入淡出切换动画的实例
2018/09/01 Javascript
js实现简单的日历显示效果函数示例
2019/11/25 Javascript
JS document文档的简单操作完整示例
2020/01/13 Javascript
python使用xmlrpclib模块实现对百度google的ping功能
2015/06/02 Python
Python函数式编程指南(四):生成器详解
2015/06/24 Python
利用Anaconda完美解决Python 2与python 3的共存问题
2017/05/25 Python
opencv与numpy的图像基本操作
2019/03/08 Python
Python语法分析之字符串格式化
2019/06/13 Python
Django的用户模块与权限系统的示例代码
2019/07/24 Python
Python递归函数 二分查找算法实现解析
2019/08/12 Python
Unineed旗下时尚轻奢网站:FABHunt
2019/05/13 全球购物
大学军训感言300字
2014/03/09 职场文书
团委竞选演讲稿
2014/04/24 职场文书
公司投资建议书
2014/05/16 职场文书
教师群众路线心得体会
2014/11/04 职场文书
2015年暑期社会实践活动总结
2015/03/27 职场文书
新郎新娘致辞
2015/07/31 职场文书
安全教育的主题班会
2015/08/13 职场文书
2016年5月份红领巾广播稿
2015/12/21 职场文书
Redis源码阅读:Redis字符串SDS详解
2021/07/15 Redis