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
PHP session常见问题集锦及解决办法总结
Mar 18 PHP
PHP Header用于页面跳转要注意的几个问题总结
Oct 03 PHP
PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
Apr 28 PHP
不重新编译PHP为php增加openssl模块的方法
Jun 14 PHP
PHP pathinfo()获得文件的路径、名称等信息说明
Sep 13 PHP
php实现QQ空间获取当前用户的用户名并生成图片
Jul 25 PHP
ThinkPHP和UCenter接口冲突的解决方法
Jul 25 PHP
PHP中file_put_contents追加和换行的实现方法
Apr 01 PHP
PHP 访问数据库配置通用方法(json)
May 20 PHP
PHP实现通过二维数组键值获取一维键名操作示例
Oct 11 PHP
PhpSpreadsheet设置单元格常用操作汇总
Nov 13 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操作MongoDB GridFS 存储文件的详解
2013/06/20 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
2014/06/12 PHP
php返回json数据函数实例
2014/10/09 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
2015/09/30 PHP
Jquery方式获取iframe页面中的 Dom元素
2014/05/07 Javascript
Javascript中的默认参数详解
2014/10/22 Javascript
Highcharts使用简例及异步动态读取数据
2015/12/30 Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
2016/02/02 Javascript
在AngularJS中使用jQuery的zTree插件的方法
2016/04/21 Javascript
node.js Sequelize实现单实例字段或批量自增、自减
2016/12/08 Javascript
vue使用axios时关于this的指向问题详解
2017/12/22 Javascript
微信小程序适配iphoneX的实现方法
2018/09/18 Javascript
JavaScript JSON数据处理全集(小结)
2019/08/15 Javascript
基于iview-admin实现动态路由的示例代码
2019/10/02 Javascript
vue仿淘宝滑动验证码功能(样式模仿)
2019/12/10 Javascript
JS实现网站吸顶条
2020/01/08 Javascript
vue 中this.$set 动态绑定数据的案例讲解
2021/01/29 Vue.js
node.js 基于 STMP 协议和 EWS 协议发送邮件
2021/02/14 Javascript
浅析Python中的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
在Python中使用turtle绘制多个同心圆示例
2019/11/23 Python
Python使用psutil获取进程信息的例子
2019/12/17 Python
基于python实现音乐播放器代码实例
2020/07/01 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
2020/11/29 Python
Lentiamo比利时:便宜的隐形眼镜
2020/02/14 全球购物
Java提供了哪些企业应用编程接口
2015/02/13 面试题
Can a struct inherit from another struct? (结构体能继承结构体吗)
2016/09/25 面试题
大学生职业生涯规划书模板
2014/01/18 职场文书
精通CAD能手自荐书
2014/01/31 职场文书
培训班开班仪式主持词
2014/03/28 职场文书
企业文化标语大全
2014/06/10 职场文书
市场策划求职信
2014/08/07 职场文书
关于教师节的演讲稿
2014/09/04 职场文书
弄虚作假心得体会
2014/09/10 职场文书
商务宴请邀请函范文
2015/02/02 职场文书
惊涛骇浪观后感
2015/06/05 职场文书
浅谈Redis位图(Bitmap)及Redis二进制中的问题
2021/07/15 Redis