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和ACCESS写聊天室(四)
Oct 09 PHP
针对初学PHP者的疑难问答(2)
Oct 09 PHP
smarty模板嵌套之include与fetch性能测试
Dec 05 PHP
php 修改、增加xml结点属性的实现代码
Oct 22 PHP
php中filter函数验证、过滤用户输入的数据
Jan 13 PHP
Codeigniter操作数据库表的优化写法总结
Jun 12 PHP
php实现的九九乘法口诀表简洁版
Jul 28 PHP
php简单计算页面加载时间的方法
Jun 19 PHP
PHP的命令行命令使用指南
Aug 18 PHP
php 数组处理函数extract详解及实例代码
Nov 23 PHP
在laravel中使用Symfony的Crawler组件分析HTML
Jun 19 PHP
PHP substr()函数参数解释及用法讲解
Nov 23 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数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
2011/10/31 PHP
PHP7正式版测试,性能惊艳!
2015/12/08 PHP
Lazy Load 延迟加载图片的jQuery插件中文使用文档
2012/10/18 Javascript
动态的创建一个元素createElement及删除一个元素
2014/01/24 Javascript
javascript 自定义回调函数示例代码
2014/09/26 Javascript
基于Jquery实现表单验证
2020/07/20 Javascript
基于jquery实现百度新闻导航菜单滑动动画
2016/03/15 Javascript
jQuery制作网页版选项卡
2016/07/28 Javascript
nodejs实现发出蜂鸣声音(系统报警声)的方法
2017/01/18 NodeJs
微信浏览器禁止页面下拉查看网址实例详解
2017/06/28 Javascript
Vue调试神器vue-devtools安装方法
2017/12/12 Javascript
完美解决linux下node.js全局模块找不到的情况
2018/05/16 Javascript
详解微信小程序开发(项目从零开始)
2019/06/06 Javascript
JavaScript 处理树数据结构的方法示例
2019/06/16 Javascript
vue element-ui读取pdf文件的方法
2019/11/26 Javascript
python 快速排序代码
2009/11/23 Python
Python实现抓取百度搜索结果页的网站标题信息
2015/01/22 Python
基于scrapy实现的简单蜘蛛采集程序
2015/04/17 Python
TensorFlow损失函数专题详解
2018/04/26 Python
python实现textrank关键词提取
2018/06/22 Python
Opencv+Python识别PCB板图片的步骤
2021/01/07 Python
利用python+request通过接口实现人员通行记录上传功能
2021/01/13 Python
CSS3 选择器 属性选择器介绍
2012/01/21 HTML / CSS
纯CSS3制作漂亮带动画效果的主机价格表
2015/04/25 HTML / CSS
服装设计专业毕业生推荐信
2013/11/09 职场文书
12岁生日感言
2014/01/21 职场文书
安全环保演讲稿
2014/08/28 职场文书
大学生简短的自我评价
2014/09/12 职场文书
民主评议党员自我评价材料
2014/09/18 职场文书
市场营销计划书范文
2015/01/16 职场文书
迟到检讨书范文
2015/01/27 职场文书
化验室岗位职责
2015/02/14 职场文书
小升初自荐信范文
2015/03/05 职场文书
2015年党风廉政建设目标责任书
2015/05/08 职场文书
Redis高并发缓存架构性能优化
2022/05/15 Redis
Mysql 一主多从的部署
2022/05/20 MySQL