时时商务社区

标题: PHP容易被忽略而出错陷阱 数字与字符串比较 [打印本页]

作者: 新格网络    时间: 2018-2-14 08:32

            
0 与任意非数字(或者说,不可转化为数字的字符)前导的字符串比较(操作符为==), 均返回 true.
原因是, 数字与字符串比较时, 先尝试将字符串转换为数字, 再比较, 一个不能转换为数字的字符串, 转换结果为0, 故, 与0比较总返回 true.
更加详细的比较规则, 多种类型的比较规则, 在 PHP手册/语言参考/运算符/比较运算符 可以找到.
在PHP里当两个数字型字符串(只含数字的字符串)进行比较的时候是直接转换成数值进行比较的
如下示例注意$a和$b两个变量的最后一位不相等)
[U]复制代码[/U] 代码如下:
//示例1


运行上面的程序却发现结果为equal(非我们认为的结果)
我们把$a与$b分别加一个字母a进去
[U]复制代码[/U] 代码如下:
//示例2


这次输出的是notEqual(正确的结果)
示例1为equal是因为PHP把两个数字型字符串转换成数字型,而这两个数字刚好相等如下示例
[U]复制代码[/U] 代码如下:


所以我们在示例1中得到的结果是equal
避免出现这种非预期结果的情况是使用类型比较符===如下示例(如果 $a 等于 $b,并且它们的类型也相同)
[U]复制代码[/U] 代码如下:
//示例4


这样我们就可以得到预期中的notEqual了
            
            
您可能感兴趣的文章:
  • 用PHP中的 == 运算符进行字符串比较
  • PHP 字符串分割和比较
  • PHP similar_text 字符串的相似性比较函数
  • PHP strncasecmp字符串比较的小技巧
  • PHP学习之字符串比较和查找
  • php 字符串压缩方法比较示例
  • PHP字符串比较函数strcmp()和strcasecmp()使用总结
  • php常用字符串比较函数实例汇总
  • php实现比较两个字符串日期大小的方法
  • php比较相似字符串的方法
  • php比较两个字符串长度的方法
  • php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)
            




    欢迎光临 时时商务社区 (http://bbs.4435.cn/) Powered by Discuz! X3.2