php中0,null,empty,空,false,字符串关系的详细介绍

2015-01-24信息快讯网

本篇文章是对php中0,null,empty,空,false,字符串关系进行了详细的分析介绍,需要的朋友参考下

在一个项目中遇到了一个奇怪的问题,耗费了我不少时间都没有解决,最终调试发现是判断的问题―-关于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 output

if($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中unserialize返回false的解决方法
preg_match_all使用心得分享
基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
两级联动select刷新后其值保持不变的实现方法
网页上facebook分享功能具体实现
linux系统下php安装mbstring扩展的二种方法
php使用base64加密解密图片示例分享
php环境下利用session防止页面重复刷新的具体实现
PHP修改session_id示例代码
让PHP显示Facebook的粉丝数量方法
php Calender(日历)代码分享
linux实现php定时执行cron任务详解
php calender(日历)二个版本代码示例(解决2038问题)
PHP eval函数使用介绍
Linux编译升级php的详细方法
关于php程序报date()警告的处理(date_default_timezone_set)
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
浅析linux下apache服务器的配置和管理
解决PHP mysql_query执行超时(Fatal error: Maximum execution time …)
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
浅析Yii中使用RBAC的完全指南(用户角色权限控制)
解析PHP中数组元素升序、降序以及重新排序的函数
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
php empty()与isset()区别的详细介绍
Session服务器配置指南与使用经验的深入解析
解析php中session的实现原理以及大网站应用应注意的问题
php unset全局变量运用问题的深入解析
Linux Apache PHP Oracle 安装配置(具体操作步骤)
解析php curl_setopt 函数的相关应用及介绍
Linux环境下搭建php开发环境的操作步骤
linux环境apache多端口配置虚拟主机的方法深入介绍
探讨:使用XMLSerialize 序列化与反序列化
解析php中call_user_func_array的作用
深入密码加salt原理的分析
深入PHP empty(),isset(),is_null()的实例测试详解
PHP Global变量定义当前页面的全局变量实现探讨
基于Linux调试工具strace与gdb的常用命令总结
PHP中空字符串介绍0、null、empty和false之间的关系
©2014-2024 dbsqp.com