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 相关文章推荐
smarty实例教程
Nov 19 PHP
SMARTY学习手记
Jan 04 PHP
php5 apache 2.2 webservice 创建与配置(java)
Jan 27 PHP
php遍历数组的4种方法总结
Jul 05 PHP
什么情况下可以不写PHP的闭合标签“?&gt;”
Aug 28 PHP
ThinkPHP在新浪SAE平台的部署实例
Oct 31 PHP
PHP中异常处理的一些方法整理
Jul 03 PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
Aug 25 PHP
php操作access数据库的方法详解
Feb 22 PHP
PHP实现基于栈的后缀表达式求值功能
Nov 10 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 PHP
详解PHP Swoole与TCP三次握手
May 27 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 session 写入数据库
2016/02/13 PHP
详解WordPress中添加友情链接的方法
2016/05/21 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
2016/11/09 PHP
javascript+css 网页每次加载不同样式的实现方法
2009/12/27 Javascript
jQuery ready函数滥用分析
2011/02/16 Javascript
js 调用父窗口的具体实现代码
2013/07/15 Javascript
Jquery获得控件值的三种方法总结
2014/02/13 Javascript
jquery中change()用法实例分析
2015/02/06 Javascript
javascript实现简单的全选和反选功能
2016/01/05 Javascript
jquery调整表格行tr上下顺序实例讲解
2016/01/09 Javascript
JavaScript html5 canvas绘制时钟效果
2016/03/01 Javascript
JS实现拖拽的方法分析
2016/12/20 Javascript
js学习总结_基于数据类型检测的四种方式(必看)
2017/07/04 Javascript
详解vue-cli与webpack结合如何处理静态资源
2017/09/19 Javascript
利用jQuery实现简单的拖曳效果实例代码
2017/10/20 jQuery
JS动画实现回调地狱promise的实例代码详解
2018/11/08 Javascript
Vue实现根据hash高亮选项卡
2019/05/27 Javascript
详解微信小程序之提高应用速度小技巧
2020/01/07 Javascript
vue iview实现动态新增和删除
2020/06/17 Javascript
Python的设计模式编程入门指南
2015/04/02 Python
python使用nntp读取新闻组内容的方法
2015/05/08 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
2019/04/01 Python
python二进制读写及特殊码同步实现详解
2019/10/11 Python
python获取array中指定元素的示例
2019/11/26 Python
python实现提取str字符串/json中多级目录下的某个值
2020/02/27 Python
Python 操作 PostgreSQL 数据库示例【连接、增删改查等】
2020/04/21 Python
院药学专业个人求职信
2013/09/21 职场文书
招商专员岗位职责
2014/02/08 职场文书
文明家庭先进事迹材料
2014/05/14 职场文书
销售岗位职责范本
2014/06/12 职场文书
学生偷窃检讨书
2014/09/25 职场文书
中班上学期个人总结
2015/02/12 职场文书
校车安全管理责任书
2015/05/11 职场文书
演讲比赛通讯稿
2015/07/18 职场文书
MySQL 如何设计统计数据表
2021/06/15 MySQL