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 相关文章推荐
php面向对象全攻略 (四)构造方法与析构方法
Sep 30 PHP
提示Trying to clone an uncloneable object of class Imagic的解决
Oct 27 PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
Jan 06 PHP
PHP实现多进程并行操作的详解(可做守护进程)
Jun 18 PHP
PHP变量内存分配问题记录整理
Nov 27 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
Mar 13 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
Jul 28 PHP
php计算整个目录大小的方法
Jun 01 PHP
分享php分页的功能模块
Jun 16 PHP
通过Email发送PHP错误的方法
Jul 20 PHP
Laravel使用RabbitMQ的方法示例
Jun 18 PHP
PHP扩展安装方法步骤解析
Nov 24 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/01 无线电
php &amp;&amp; 逻辑与运算符使用说明
2010/03/04 PHP
深入解析PHP中逗号与点号的区别
2013/08/05 PHP
php的memcache类分享(memcache队列)
2014/03/26 PHP
php获取网页里所有图片并存入数组的方法
2015/04/06 PHP
jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)
2013/02/26 Javascript
JS实现标签页效果(配合css)
2013/04/03 Javascript
jquery动态加载select下拉框示例代码
2013/12/10 Javascript
js判断是否为ie的方法小结
2014/01/13 Javascript
js判断当前页面用什么浏览器打开的方法
2016/01/06 Javascript
jQuery each函数源码分析
2016/05/25 Javascript
AngularJS 模型详细介绍及实例代码
2016/07/27 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
2017/01/22 Javascript
AngularJS报错$apply already in progress的解决方法分析
2017/01/30 Javascript
jquery实现轮播图效果
2017/02/13 Javascript
Js利用Canvas实现图片压缩功能
2017/09/13 Javascript
通过js动态创建标签,并设置属性方法
2018/02/24 Javascript
Vue表单类的父子组件数据传递示例
2018/05/03 Javascript
[02:48]DOTA2英雄基础教程 暗夜魔王
2013/12/12 DOTA
[36:02]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第一局
2016/02/28 DOTA
python获取当前计算机cpu数量的方法
2015/04/18 Python
Python列表list解析操作示例【整数操作、字符操作、矩阵操作】
2017/07/25 Python
Python HTTP下载文件并显示下载进度条功能的实现
2020/04/02 Python
IE支持HTML5的解决方法
2009/10/20 HTML / CSS
Servlet如何得到服务器的信息
2015/12/22 面试题
求职简历自荐信范文
2013/10/21 职场文书
写给妈妈的道歉信
2014/01/11 职场文书
骨干教师培训制度
2014/01/13 职场文书
酒吧创业计划书
2014/01/18 职场文书
奥巴马英文演讲稿
2014/05/15 职场文书
应届生求职信
2014/05/31 职场文书
2014年教师节演讲稿
2014/09/03 职场文书
实习班主任自我评价
2015/03/11 职场文书
2015年语文教研组工作总结
2015/05/23 职场文书
2016年元旦寄语
2015/08/17 职场文书
python热力图实现的完整实例
2022/06/25 Python