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


Posted in PHP onOctober 21, 2009
$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).

PHP 相关文章推荐
新版PHP极大的增强功能和性能
Oct 09 PHP
使用字符串函数输出整数化的PHP版本号
Oct 09 PHP
php.ini中的php-5.2.0配置指令详解
Mar 27 PHP
smarty section简介与用法分析
Oct 03 PHP
php URL编码解码函数代码
Mar 10 PHP
php GeoIP的使用教程
Mar 09 PHP
php获取mysql字段名称和其它信息的例子
Apr 14 PHP
PHP实现克鲁斯卡尔算法实例解析
Aug 22 PHP
Yii入门教程之目录结构、入口文件及路由设置
Nov 25 PHP
PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
May 12 PHP
KindEditor在php环境下上传图片功能集成的方法示例
Jul 20 PHP
PHP7修改的函数
Mar 09 PHP
php 3行代码的分页算法(求起始页和结束页)
Oct 21 #PHP
php实现mysql同步的实现方法
Oct 21 #PHP
php 魔术方法使用说明
Oct 20 #PHP
关于Appserv无法打开localhost问题的解决方法
Oct 16 #PHP
php foreach、while性能比较
Oct 15 #PHP
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
Oct 15 #PHP
php 数学运算验证码实现代码
Oct 11 #PHP
You might like
php 数组的指针操作实现代码
2011/02/08 PHP
深入php数据采集的详解
2013/06/02 PHP
那些年我们错过的魔术方法(Magic Methods)
2014/01/14 PHP
PHP防盗链代码实例
2014/08/27 PHP
php正则表达式学习笔记
2015/11/13 PHP
PHP面向对象程序设计实例分析
2016/01/26 PHP
PHP+原生态ajax实现的省市联动功能详解
2017/08/15 PHP
js导出txt示例代码
2014/01/14 Javascript
js弹出对话框方式小结
2015/11/17 Javascript
JS生成某个范围的随机数【四种情况详解】
2016/04/20 Javascript
Javascript中prototype的使用详解
2016/06/18 Javascript
总结AngularJS开发者最常犯的十个错误
2016/08/31 Javascript
nodejs简单实现操作arduino
2016/09/25 NodeJs
bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)
2016/12/01 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】
2017/03/09 Javascript
js Date()日期函数浏览器兼容问题解决方法
2017/09/12 Javascript
node.js中axios使用心得总结
2017/11/29 Javascript
浅谈vuex 闲置状态重置方案
2018/01/04 Javascript
JavaScript实现简单动态进度条效果
2018/04/06 Javascript
js实现简易计算器功能
2019/10/18 Javascript
js+canvas实现两张图片合并成一张图片的方法
2019/11/01 Javascript
详解React中共享组件逻辑的三种方式
2021/02/02 Javascript
使用python BeautifulSoup库抓取58手机维修信息
2013/11/21 Python
Python2.x中文乱码问题解决方法
2015/06/02 Python
python3之模块psutil系统性能信息使用
2018/05/30 Python
Python 使用PyQt5 完成选择文件或目录的对话框方法
2019/06/27 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
python中return不返回值的问题解析
2020/07/22 Python
SQL里面如何插入自动增长序列号字段
2012/03/29 面试题
小学一年级评语大全
2014/04/22 职场文书
党员四风自我剖析材料思想汇报
2014/09/13 职场文书
党的群众路线批评与自我批评范文
2014/10/16 职场文书
优秀班组申报材料
2014/12/25 职场文书
高中社区服务活动报告
2015/02/05 职场文书
欠款证明
2015/06/24 职场文书
小学开学典礼新闻稿
2015/07/17 职场文书