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实现验证码功能
Oct 09 PHP
dedecms中显示数字验证码的修改方法
Mar 21 PHP
php下使用iconv需要注意的问题
Nov 20 PHP
php FLEA中二叉树数组的遍历输出
Sep 26 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
Jun 20 PHP
Yii框架form表单用法实例
Dec 04 PHP
php实现递归抓取网页类实例
Apr 03 PHP
php 中奖概率算法实现代码
Jan 25 PHP
php获取ajax的headers方法与内容实例
Dec 27 PHP
php 判断IP为有效IP地址的方法
Jan 28 PHP
php使用curl伪造来源ip和refer的方法示例
May 08 PHP
微信小程序和php的登录实现
Apr 01 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输出xml属性的方法
2015/03/19 PHP
php验证码实现代码(3种)
2015/09/07 PHP
php实现图片上传、剪切功能
2016/05/07 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
Laravel框架定时任务2种实现方式示例
2018/12/08 PHP
用js代码改变单选框选中状态的简单实例
2013/12/18 Javascript
javascript:json数据的页面绑定示例代码
2014/01/26 Javascript
浅谈Javascript中匀速运动的停止条件
2014/12/19 Javascript
js限制文本框的输入内容代码分享(3类)
2015/08/20 Javascript
Vue.js系列之项目结构说明(2)
2017/01/03 Javascript
微信小程序 使用canvas制作K线实例详解
2017/01/12 Javascript
js控制按钮,防止频繁点击响应的实例
2017/02/15 Javascript
微信小程序城市定位的实现实例(获取当前所在国家城市信息)
2017/05/17 Javascript
简单谈谈JS中的正则表达式
2017/09/11 Javascript
JS实现图片拖拽交换效果
2018/11/30 Javascript
JS实现的冒泡排序,快速排序,插入排序算法示例
2019/03/02 Javascript
详解vue使用$http服务端收不到参数
2019/04/19 Javascript
详解vue-cli项目开发/生产环境代理实现跨域请求
2019/07/23 Javascript
Nodejs环境实现socket通信过程解析
2020/07/03 NodeJs
vue实现拖拽进度条
2021/03/01 Vue.js
[16:56]heroes英雄教学 司夜刺客
2014/09/18 DOTA
Python中__new__与__init__方法的区别详解
2015/05/04 Python
Python自动化开发学习之三级菜单制作
2017/07/14 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
numpy.ndarray 交换多维数组(矩阵)的行/列方法
2018/08/02 Python
python中pika模块问题的深入探究
2018/10/13 Python
python爬虫中PhantomJS加载页面的实例方法
2020/11/12 Python
python-jwt用户认证食用教学的实现方法
2021/01/19 Python
加拿大高尔夫超市:Golf Town
2018/01/12 全球购物
澳大利亚领先的亚麻品牌:Bed Threads
2019/12/16 全球购物
解除劳动合同协议书范本
2014/04/14 职场文书
实习生辞职信范文
2015/03/02 职场文书
消防演习通知
2015/04/25 职场文书
2016新年年会主持词
2015/07/06 职场文书
高中运动会广播稿
2015/08/19 职场文书
2016年学校党支部公开承诺书
2016/03/25 职场文书