PHP之0与空字符串关系测试以及详解
来源:互联网 发布:投弹兵升级数据 编辑:程序博客网 时间:2024/06/06 03:13
工作中遇到一个奇怪问题
0=”“或0=”
为何???
测试代码
<?php//定义单双引号是因为php中单双引号表达的含义不同$zero_string = '0';$zero_string_shuang = "0";$zero_int = 0;if(empty($zero_string)){ echo 'zero_string empty 为空'."\n";}if($zero_string==''){ echo 'zero_string is 单引号为空'."\n";}if($zero_string==""){ echo 'zero_string is 双引号为空';}if($zero_string==null){ echo 'zero_string is null';}if(empty($zero_int)){ echo 'zero_int empty 为空'."\n";}if($zero_int==''){ echo 'zero_int 单引号为空'."\n";}if($zero_int==""){ echo 'zero_int 双引号为空'."\n";}if($zero_int==null){ echo 'zero_int 等于null'."\n";}if($zero_int===''){ echo 'zero_int 全等于单引号'."\n";}if($zero_int===""){ echo 'zero_int 全等于双引号'."\n";}if($zero_int===null){ echo 'zero_int 等于null'."\n";}if($zero_int==$zero_string){ echo 'zero int 等于 zero string'."\n";}if($zero_int==$zero_string_shuang){ echo 'zero int 等于 zero string shuang'."\n";}?>
实测结果
看到上述问题是不是产生了疑惑
0==” 和 0==””
0 == “0” 和 0== ‘0’
but
‘0’!=”” 和 ‘0’!=”
“0”!=”” 和 “0”!=”
why ? ? ? 根据值的传递性。
0==”” 并且 0==”0” 则”0” == “”
但是这和我们测试结果不符。”0”!=”” and “0”!=” and ‘0’!=” and ‘0’!=”“
那么问题来了?
查看php官网文档,php比较分为松散比较以及严格比较
松散比较(==)
严格比较(===)
看了这两种比较,虽然在松散比较中各种对应关系已经很明白了,但是为何出现上述这种对应关系?
1.php 比较不具有传递性
2.当涉及多种类型比较时,PHP处理比较的方式相当混乱。当字符串与整形进行比较时,字符串会强转为整形,字符串强转整形为0,所以会看到”“==0并且” == 0 ,所以就可以解释为何 0==”并且0==’0’,但是”!=’0’。因为”和’0’在进行比较时都被强转为0,所以才有了上述结果。既然0成立那么 “php” == 0或”sdf”==0也应该成立
<?phpif("php"==0){ echo "php == 0 \n";}if("sdf"==0){ echo "sdf == 0\n";}?>
测试成功,说明php中0与任何字符串比较都相等
1 0
- PHP之0与空字符串关系测试以及详解
- php中0,null,empty,空,false,字符串关系详解
- php中0,null,empty,空,false,字符串关系详解
- php 空字符串与 0 之间的关系
- php 0,null,empty,空,false,字符串关系
- php null 空字符串与 0
- php中0,null,empty,空,false,字符串关系的详细介绍
- 空字符串(''),NULL和0的关系
- SQL之空与非空以及相关函数
- 空字符串、'\0'、0与NULL的区别以及数组清零的特点分析
- 详解php与mysql的关系
- bash条件测试之空字符串的困惑
- 空指针与空字符串
- php中NULL与空的字符串是不是一样的
- php中isset()与empty的区别以及与0,NULL,FALSE的关系
- 自动化测试与DevOps以及持续集成的关系。
- shell脚本测试空字符串
- 【C基础】空字符'\0'与字符串
- 在mybatis中动态创建数据表
- 我的java学习之路-基础-DOM4J
- Java序列化
- Git 提示fatal: remote origin already exists 错误解决办法
- git 推送基本操作
- PHP之0与空字符串关系测试以及详解
- 数据结构——栈和队列
- ubuntu rar
- web开发-本地Windows远程桌面连接阿里云Ubuntu服务器-学习笔记九
- Linux系统开机自动加载驱动module
- 百度地图、高德地图都用POI吸引你,不过它到底是什么?
- bzoj 4819: [Sdoi2017]新生舞会 二分答案+费用流
- 我的java学习之路-html、css学习
- BZOJ 1217: [HNOI2003]消防局的设立 贪心