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 相关文章推荐
我的论坛源代码(三)
Oct 09 PHP
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
Jun 16 PHP
基于php-fpm 参数的深入理解
Jun 03 PHP
探讨php define()函数及defined()函数使用详解
Jun 09 PHP
PHP中对缓冲区的控制实现代码
Sep 29 PHP
PHP callback函数使用方法和注意事项
Jan 23 PHP
php强大的时间转换函数strtotime
Feb 18 PHP
PHP 实现页面静态化的几种方法
Jul 23 PHP
laravel如何开启跨域功能示例详解
Aug 31 PHP
PHP基于redis计数器类定义与用法示例
Feb 08 PHP
PHP生成腾讯云COS接口需要的请求签名
May 20 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
Mar 02 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面向接口编程 耦合设计模式 简单范例
2011/03/23 PHP
php设计模式 Visitor 访问者模式
2011/06/28 PHP
常用PHP框架功能对照表
2014/10/23 PHP
php 如何获取文件的后缀名
2016/06/05 PHP
php使用glob函数遍历文件和目录详解
2016/09/23 PHP
PHP读取目录树的实现方法分析
2019/03/22 PHP
PHP切割汉字的常用方法实例总结
2019/04/27 PHP
javascript背投广告代码的完善
2008/04/08 Javascript
javascript 进度条 实现代码
2009/07/30 Javascript
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
2009/10/26 Javascript
getAsDataURL在Firefox7.0下无法预览本地图片的解决方法
2013/11/15 Javascript
js实现按Ctrl+Enter发送效果
2014/09/18 Javascript
jquery动态分页效果堪比时光网
2014/09/25 Javascript
在Node.js中使用HTTP上传文件的方法
2015/06/23 Javascript
location.hash保存页面状态的技巧
2016/04/28 Javascript
AngularJS基础 ng-init 指令简单示例
2016/08/02 Javascript
JS 拼凑字符串的简单实例
2016/09/02 Javascript
bootstrap table实现单击单元格可编辑功能
2017/03/28 Javascript
关于JavaScript中的this指向问题总结篇
2017/07/23 Javascript
JavaScript html5 canvas实现图片上画超链接
2017/10/20 Javascript
JS尾递归的实现方法及代码优化技巧
2019/01/19 Javascript
Vue和React组件之间的传值方式详解
2019/01/31 Javascript
[46:12]完美世界DOTA2联赛循环赛 DM vs Matador BO2第一场 11.04
2020/11/04 DOTA
Linux下用Python脚本监控目录变化代码分享
2015/05/21 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
2020/06/23 Python
python利用smtplib实现QQ邮箱发送邮件
2020/05/20 Python
python判断所输入的任意一个正整数是否为素数的两种方法
2019/06/27 Python
解决django中form表单设置action后无法回到原页面的问题
2020/03/13 Python
Python小白学习爬虫常用请求报头
2020/06/03 Python
七年级政治教学反思
2014/02/03 职场文书
《童年的发现》教学反思
2014/02/14 职场文书
学雷锋演讲稿
2014/03/04 职场文书
2015年毕业实习工作总结
2015/05/29 职场文书
在HTML5 localStorage中存储对象的示例代码
2021/04/21 Javascript
MySql数据库触发器使用教程
2022/06/01 MySQL
python 判断字符串当中是否包含字符(str.contain)
2022/06/01 Python