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函数utf8转gb2312编码
Dec 21 PHP
php imagecreatetruecolor 创建高清和透明图片代码小结
May 15 PHP
php中时间轴开发(刚刚、5分钟前、昨天10:23等)
Oct 03 PHP
PHP获取数组中某元素的位置及array_keys函数应用
Jan 29 PHP
ThinkPHP3.1新特性之G方法的使用
Jun 19 PHP
Yii中render和renderPartial的区别
Sep 03 PHP
php实现将上传word文件转为html的方法
Jun 03 PHP
Yii2使用swiftmailer发送邮件的方法
May 03 PHP
Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例
Jul 07 PHP
实例说明js脚本语言和php脚本语言的区别
Apr 04 PHP
php+ajax实现商品对比功能示例
Apr 13 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
Jan 26 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/03 咖啡文化
解析php类的注册与自动加载
2013/07/05 PHP
php使用json_encode对变量json编码
2014/04/07 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
2014/06/12 PHP
ThinkPHP3.1基础知识快速入门
2014/06/19 PHP
深入浅出php socket编程
2015/05/13 PHP
MooTools 1.2中的Drag.Move来实现拖放
2009/09/15 Javascript
多浏览器兼容性比较好的复制到剪贴板的js代码
2011/10/09 Javascript
js获取元素到文档区域document的(横向、纵向)坐标的两种方法
2013/05/17 Javascript
Javascript实现重力弹跳拖拽运动效果示例
2013/06/28 Javascript
javascript强大的日期函数代码分享
2013/09/04 Javascript
JavaScript中的this机制
2016/01/30 Javascript
JavaScript与jQuery实现的闪烁输入效果
2016/02/18 Javascript
jquery实现全选和全不选功能效果的实现代码【推荐】
2016/05/05 Javascript
再谈Javascript中的基本类型和引用类型(推荐)
2016/07/01 Javascript
跨域请求两种方法 jsonp和cors的实现
2018/11/11 Javascript
vue中input的v-model清空操作
2019/09/06 Javascript
Angular6项目打包优化的实现方法
2019/12/15 Javascript
比较详细Python正则表达式操作指南(re使用)
2008/09/06 Python
Python正则表达式教程之二:捕获篇
2017/03/02 Python
对python中字典keys,values,items的使用详解
2019/02/03 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
2019/06/24 Python
对django2.0 关联表的必填on_delete参数的含义解析
2019/08/09 Python
python 两个一样的字符串用==结果为false问题的解决
2020/03/12 Python
python爬虫实现获取下一页代码
2020/03/13 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
2020/12/03 Python
门诊挂号室室长岗位职责
2013/11/27 职场文书
优秀护士获奖感言
2014/02/20 职场文书
班级文化建设标语
2014/06/23 职场文书
基层党员对照检查材料
2014/09/24 职场文书
部队2014年终工作总结
2014/11/27 职场文书
教师党员自我评价2015
2015/03/04 职场文书
我的生日感言
2015/08/03 职场文书
民间借贷纠纷起诉书
2015/08/03 职场文书
Mysql效率优化定位较低sql的两种方式
2021/05/26 MySQL
Python中递归以及递归遍历目录详解
2021/10/24 Python