PHP字符串 ==比较运算符的副作用

 更新时间:2009年10月21日 14:17:44   作者:  
PHP字符串 ==比较运算符的副作用,大家可以参考下。
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

复制代码 代码如下:

$a = '212345678912000005';
$b = '212345678912000001';
var_dump($a == $b);

这段代码的输出是bool(true), 说明这样判断会得出结论是两者相等. 类似的特性在in_array()函数第3个参数为false或者不设置的情况. 原因是首先判断字符串是否是数字, 然后转换成long或者double(C语言数据类型)再判断 - 使用zendi_smart_strcmp. 但是, 源码中的注释说声明考虑了溢出的情况,
复制代码 代码如下:

} else if (dval1 == dval2 && !zend_finite(dval1)) {
    /* Both values overflowed and have the same sign,
     * so a numeric comparison would be inaccurate */
    goto string_cmp;
}

dval1和dval2分别是两个字符串转换为double型后的值. 但为什么还是这样呢? 也许这个判断并不正确. 进一步研究再说...

解决方法, 使用三个等号"==="代替两个等号"==", in_array()函数设置第三个参数为true: in_array('val', $array, true).

相关文章

  • Eclipse的PHP插件PHPEclipse安装和使用

    Eclipse的PHP插件PHPEclipse安装和使用

    PHP有很多相当不错的开发工具,如Zend Studio、NetBeans、phpdesigner等,但对于习惯Java编程的程序猿们来说,最常用的还要属Eclipse。那么Eclipse能用于PHP开发吗?答案是“必须滴”。
    2014-07-07
  • 分享最受欢迎的5款PHP框架

    分享最受欢迎的5款PHP框架

    这篇文章主要为大家分享最受欢迎的5款PHP框架,需要的朋友可以参考下
    2014-11-11
  • PHP 中关于ord($str)>0x80的详细说明

    PHP 中关于ord($str)>0x80的详细说明

    为了识别双字节的字符,比如汉字或日文韩文等都是占两字节的,每字节高位为1,而一般西文字符只有一个字节,七位有效编码,高位为0而0x80对应的二进制代码为1000 0000,最高位为一,代表汉字.汉字编码格式通称为10格式. 一个汉字占2字节,但只代表一个字符
    2012-09-09
  • php中的观察者模式简单实例

    php中的观察者模式简单实例

    这篇文章主要介绍了php中的观察者模式简单实例,观察者模式是设计模式中比较常见的一个模式,包含两个或者更多的互相交互的类,本文直接给出实现代码,需要的朋友可以参考下
    2015-01-01
  • 解析PHP可变函数的经典用法

    解析PHP可变函数的经典用法

    本篇文章是对PHP可变函数的经典用法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • PHP设计模式之原型模式示例详解

    PHP设计模式之原型模式示例详解

    这篇文章主要给大家介绍了关于PHP设计模式之原型模式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • PHP判断IP并转跳到相应城市分站的方法

    PHP判断IP并转跳到相应城市分站的方法

    这篇文章主要介绍了PHP判断IP并转跳到相应城市分站的方法,实例分析了php解析URL及跳转的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • PHP数学运算函数大汇总(经典值得收藏)

    PHP数学运算函数大汇总(经典值得收藏)

    这篇文章主要介绍了PHP数学运算函数,汇总分析了常见的PHP数学运算函数的功能,使用方法与注意事项,需要的朋友可以参考下
    2016-04-04
  • PHP对接阿里云虚拟号的实现(号码隐私保护)

    PHP对接阿里云虚拟号的实现(号码隐私保护)

    这篇文章主要介绍了PHP对接阿里云虚拟号的实现(号码隐私保护),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • php中0,null,empty,空,false,字符串关系的详细介绍

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

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

最新评论

?


http://www.vxiaotou.com