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 相关文章推荐
BBS(php &amp; mysql)完整版(四)
Oct 09 PHP
php ajax 静态分页过程形式
Sep 02 PHP
PHP服务器页面间跳转实现方法
Aug 02 PHP
编写php应用程序实现摘要式身份验证的方法详解
Jun 08 PHP
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
Jan 03 PHP
php动态变量定义及使用
Jun 10 PHP
PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): ...
Feb 14 PHP
PHP实现的自定义数组排序函数与排序类示例
Nov 18 PHP
php表单处理操作
Nov 16 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
Apr 30 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
Aug 06 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
Feb 27 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
如何提高MYSQL数据库的查询统计速度 select 索引应用
2007/04/11 PHP
可以在线执行PHP代码包装修正版
2008/03/15 PHP
PHP循环函数使用介绍之PHP基础入门教程
2013/09/21 PHP
PHP的构造方法,析构方法和this关键字详细介绍
2013/10/22 PHP
php中使用sftp教程
2015/03/30 PHP
百度地图API使用方法详解
2015/08/25 PHP
深入理解php printf() 输出格式化的字符串
2016/05/23 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
2016/12/19 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
JS冒泡事件的快速解决方法
2013/12/16 Javascript
邮箱下拉自动填充选择示例代码附图
2014/04/03 Javascript
jquery实现简单的瀑布流布局
2016/12/11 Javascript
解决微信内置浏览器返回上一页强制刷新问题方法
2017/02/05 Javascript
JavaScript实现类似淘宝的购物车效果
2017/03/16 Javascript
JS中LocalStorage与SessionStorage五种循序渐进的使用方法
2017/07/12 Javascript
Node实战之不同环境下配置文件使用教程
2018/01/02 Javascript
JavaScript设计模式之代理模式简单实例教程
2018/07/03 Javascript
webuploader实现上传图片到服务器功能
2018/08/16 Javascript
vue+iview+less 实现换肤功能
2018/08/17 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
2018/10/29 Javascript
基于游标的分页接口实现代码示例
2018/11/12 Javascript
详解vue中的computed的this指向问题
2018/12/05 Javascript
vue cli3 配置proxy代理无效的解决
2019/10/30 Javascript
JavaScript实现滑块验证解锁
2021/01/07 Javascript
[51:17]Mski vs VGJ.S Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
Python实现多线程抓取妹子图
2015/08/08 Python
python中函数传参详解
2016/07/03 Python
Python常用字符串替换函数strip、replace及sub用法示例
2018/05/21 Python
Python 忽略warning的输出方法
2018/10/18 Python
python 函数内部修改外部变量的方法
2018/12/18 Python
将python运行结果保存至本地文件中的示例讲解
2019/07/11 Python
Myprotein瑞典官方网站:畅销欧洲英国运动营养品牌
2018/01/22 全球购物
移风易俗倡议书
2014/04/15 职场文书
2015年党员个人剖析材料
2014/12/18 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
Redis 报错 error:NOAUTH Authentication required
2022/05/15 Redis