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+DBM的同学录程序(1)
Oct 09 PHP
php2html php生成静态页函数
Dec 08 PHP
php中比较简单的导入phpmyadmin生成的sql文件的方法
Jun 28 PHP
PHP中的gzcompress、gzdeflate、gzencode函数详解
Jul 29 PHP
PHP统计目录大小的自定义函数分享
Nov 18 PHP
PHP使用header()输出图片缓存实例
Dec 09 PHP
php用户注册时常用的检验函数实例总结
Dec 22 PHP
PHP中使用SimpleXML检查XML文件结构实例
Jan 07 PHP
PHP结合jQuery实现找回密码
Jul 22 PHP
Zend Framework框架Smarty扩展实现方法
Mar 22 PHP
PHP单链表的实现代码
Jul 05 PHP
laravel开发环境homestead搭建过程详解
Jul 03 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 翻页 实例代码
2009/08/07 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
2013/06/03 PHP
PHP数组操作――获取数组最后一个值的方法
2015/04/14 PHP
php判断linux下程序问题实例
2015/07/09 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
2015/08/18 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
网页源代码保护(禁止右键、复制、另存为、查看源文件)
2012/05/23 Javascript
使用Post提交时须将空格转换成加号的解释
2013/01/14 Javascript
js定时器怎么写?就是在特定时间执行某段程序
2013/10/11 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
详解vue 中使用 AJAX获取数据的方法
2017/01/18 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
2017/04/25 Javascript
浅析Vue自定义组件的v-model
2017/11/26 Javascript
用vue2.0实现点击选中active其他选项互斥的效果
2018/04/12 Javascript
vue地址栏直接输入路由无效问题的解决
2018/11/15 Javascript
详解ES6 export default 和 import语句中的解构赋值
2019/05/28 Javascript
jQuery实现动态加载(按需加载)javascript文件的方法分析
2019/05/31 jQuery
layui前端时间戳转化实例
2019/11/15 Javascript
浅析vue中的nextTick
2020/12/28 Vue.js
python复制与引用用法分析
2015/04/08 Python
python如何对实例属性进行类型检查
2018/03/20 Python
浅谈numpy数组中冒号和负号的含义
2018/04/18 Python
浅谈python3发送post请求参数为空的情况
2018/12/28 Python
在Pycharm中对代码进行注释和缩进的方法详解
2019/01/20 Python
Python3按一定数据位数格式处理bin文件的方法
2019/01/24 Python
日本民宿预约平台:STAY JAPAN
2017/07/01 全球购物
Looking4Parking美国:全球排名第一的机场停车比较品牌
2019/08/26 全球购物
高中的职业生涯规划书
2013/12/28 职场文书
竞争性谈判邀请书
2014/02/06 职场文书
大学班级文化建设方案
2014/05/06 职场文书
乡镇创先争优活动总结
2014/08/28 职场文书
高中校园广播稿
2014/10/21 职场文书
用Python爬虫破解滑动验证码的案例解析
2021/05/06 Python
python3+PyQt5+Qt Designer实现界面可视化
2021/06/10 Python
MySQL数据库如何查看表占用空间大小
2022/06/10 MySQL
Spring Boot 的创建和运行示例代码详解
2022/07/23 Java/Android