设为首页 收藏本站
查看: 947|回复: 0

[经验分享] php中0,null,empty,空,false,字符串关系详解

[复制链接]

尚未签到

发表于 2015-8-27 11:53:13 | 显示全部楼层 |阅读模式
在一个项目中遇到了一个奇怪的问题,耗费了我不少时间都没有解决,最终调试发现是判断的问题—-关于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,判断为空最好用===;








echo         0 == null; echo '**<br/>' ;        //true
echo         0 === null; echo '**<br/>' ;       //false
echo (string)0 != null; echo '**<br/>' ;        //true
echo         0 != null; echo '**<br/>' ;        //false
echo         0 !== null; echo '**<br/>' ;       //true

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-104989-1-1.html 上篇帖子: PHP 的比较运算与逻辑运算 下篇帖子: Ajax & PHP 边学边练 之五 图片处理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表