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新手上路(十三)
Oct 09 PHP
Adodb的十个实例(清晰版)
Dec 31 PHP
PHP配置文件中最常用四个ini函数
Mar 19 PHP
PHP 字符串分割和比较
Oct 06 PHP
php学习笔记 数组遍历实现代码
Jun 09 PHP
php中使用Curl、socket、file_get_contents三种方法POST提交数据
Aug 12 PHP
php生成二维码时出现中文乱码的解决方法
Dec 18 PHP
Laravel实现用户注册和登录
Jan 23 PHP
浅谈PHP中foreach/in_array的使用
Nov 02 PHP
PHP读取文件内容的五种方式
Dec 28 PHP
php连接sftp的作用以及实例代码
Sep 23 PHP
php操作redis常见方法示例【key与value操作】
Apr 14 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
用PHP为SHOPEX增加日志功能代码
2010/07/02 PHP
php变量作用域的深入解析
2013/06/03 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
2020/04/05 PHP
PHP文件上传之多文件上传的实现思路
2016/01/27 PHP
彪哥1.1(智能表格)提供下载
2006/09/07 Javascript
flash javascript之间的通讯方法小结
2008/12/20 Javascript
javascript自定义函数参数传递为字符串格式
2014/07/29 Javascript
jQuery中not()方法用法实例
2015/01/06 Javascript
ECMAScript中函数function类型
2015/06/03 Javascript
javascript实现二级级联菜单的简单制作
2015/11/19 Javascript
详解AngularJS中的filter过滤器用法
2016/01/04 Javascript
清除输入框内的空格
2016/12/21 Javascript
react.js CMS 删除功能的实现方法
2017/04/17 Javascript
让div运动起来 js实现缓动效果
2017/07/06 Javascript
原生JS进行前后端同构
2018/04/22 Javascript
详解vue.js移动端配置flexible.js及注意事项
2019/04/10 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
2019/05/07 Javascript
js实现3D照片墙效果
2019/10/28 Javascript
[02:50]【扭转乾坤,只此一招】DOTA2永雾林渊版本开启新篇章
2020/12/22 DOTA
python简单的函数定义和用法实例
2015/05/07 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
Python实现删除排序数组中重复项的两种方法示例
2019/01/31 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
2019/08/18 Python
python实现监控阿里云账户余额功能
2019/12/16 Python
Python.append()与Python.expand()用法详解
2019/12/18 Python
Python函数默认参数常见问题及解决方案
2020/03/26 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
2020/04/16 Python
python 实现图片裁剪小工具
2021/02/02 Python
LivingSocial爱尔兰:爱尔兰本地优惠
2018/08/10 全球购物
德国的大型美妆个护电商:Flaconi
2020/06/26 全球购物
英语国培研修感言
2014/02/13 职场文书
《梅花魂》教学反思
2014/04/30 职场文书
员工保密承诺书
2014/05/28 职场文书
中秋晚会策划方案
2014/06/12 职场文书
2015年控辍保学工作总结
2015/05/18 职场文书
人事行政部各岗位职责说明书!
2019/07/15 职场文书