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 相关文章推荐
在Windows中安装Apache2和PHP4的权威指南
Oct 09 PHP
同一空间绑定多个域名而实现访问不同页面的PHP代码
Dec 06 PHP
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
Nov 27 PHP
php中获取远程客户端的真实ip地址的方法
Aug 03 PHP
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
Nov 02 PHP
国外PHP程序员的13个好习惯小结
Feb 20 PHP
PHP中设置时区,记录日志文件的实现代码
Jan 07 PHP
php+js iframe实现上传头像界面无跳转
Apr 29 PHP
destoon文章模块调用企业会员资料的方法
Aug 22 PHP
php 魔术方法详解
Nov 11 PHP
详解Laravel视图间共享数据与视图Composer
Aug 04 PHP
分析php://output和php://stdout的区别
May 06 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
回答PHPCHINA上的几个问题:URL映射
2007/02/14 PHP
PHP strtok()函数的优点分析
2010/03/02 PHP
php中chdir()函数用法实例
2014/11/13 PHP
php+Mysqli利用事务处理转账问题实例
2015/02/11 PHP
thinkphp项目如何自定义微信分享描述内容
2017/02/20 PHP
php实现数字补零的方法总结
2018/09/12 PHP
phpMyAdmin通过密码漏洞留后门文件
2018/11/20 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
HTML代码中标签的全部属性 中文注释说明
2009/03/26 Javascript
Jquery 的outerHeight方法使用介绍
2013/09/11 Javascript
javascript打开word文档的方法
2014/04/16 Javascript
js对字符的验证方法汇总
2015/02/04 Javascript
解析JavaScript的ES6版本中的解构赋值
2015/07/28 Javascript
使用NodeJs 开发微信公众号(三)微信事件交互实例
2016/03/02 NodeJs
bootstrap table 数据表格行内修改的实现代码
2017/02/13 Javascript
JavaScript结合HTML DOM实现联动菜单
2017/04/05 Javascript
简单了解JS打开url的方法
2020/02/21 Javascript
python转换摩斯密码示例
2014/02/16 Python
Python实现自动登录百度空间的方法
2017/06/10 Python
Python+matplotlib实现填充螺旋实例
2018/01/15 Python
利用python实现短信和电话提醒功能的例子
2019/08/08 Python
在django项目中导出数据到excel文件并实现下载的功能
2020/03/13 Python
iPython pylab模式启动方式
2020/04/24 Python
使用python-cv2实现视频的分解与合成的示例代码
2020/10/26 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
2020/10/26 Python
解释DataSet(ds) 和 ds as DataSet 的含义
2014/07/27 面试题
中专毕业生求职简历的自我评价
2013/10/21 职场文书
信息专业大学生自我评价分享
2014/01/17 职场文书
应届护士求职信范文
2014/01/26 职场文书
幼儿园英语教学反思
2014/01/30 职场文书
我们的节日元宵活动方案
2014/08/23 职场文书
师德师风自查总结
2014/10/14 职场文书
HTML页面滚动时部分内容位置固定不滚动的实现
2021/04/14 HTML / CSS
如何使用flask将模型部署为服务
2021/05/13 Python
在Spring-Boot中如何使用@Value注解注入集合类
2021/08/02 Java/Android
Java8 CompletableFuture 异步回调
2022/04/28 Java/Android