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 相关文章推荐
粗略计算在线时间,bug:ip相同
Dec 09 PHP
PHP var_dump遍历对象属性的函数与应用代码
Jun 04 PHP
PHP容易忘记的知识点分享
Apr 30 PHP
PHP empty函数报错解决办法
Mar 06 PHP
yii2控制器Controller Ajax操作示例
Jul 23 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
Mar 12 PHP
Zend Framework框架中实现Ajax的方法示例
Jun 27 PHP
php+redis消息队列实现抢购功能
Feb 08 PHP
PHP判断是否是微信打开,浏览器打开的方法
Mar 14 PHP
PHP实现数据库的增删查改功能及完整代码
Apr 18 PHP
PHP实现的分解质因数操作示例
Aug 01 PHP
thinkphp5修改view到根目录实例方法
Jul 02 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 set_time_limit(0) 设置程序执行时间的函数
2010/05/26 PHP
配置eAccelerator和XCache扩展来加速PHP程序的执行
2015/12/22 PHP
老生常谈PHP位运算的用途
2017/03/12 PHP
详解PHP 7.4 中数组延展操作符语法知识点
2019/07/19 PHP
屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键 的javascript代码
2007/04/01 Javascript
JavaScript实现快速排序(自已编写)
2012/12/19 Javascript
cookie的复制与使用记住用户名实现代码
2013/11/04 Javascript
js实现滑动触屏事件监听的方法
2015/05/05 Javascript
简单的JS时钟实例讲解
2016/01/13 Javascript
详解JavaScript表单验证(E-mail 验证)
2016/03/31 Javascript
AngularJS中transclude用法详解
2016/11/03 Javascript
微信小程序 登录的简单实现
2017/04/19 Javascript
解决vue2.x中数据渲染以及vuex缓存的问题
2017/07/13 Javascript
Node调用Java的示例代码
2017/09/20 Javascript
vue中element组件样式修改无效的解决方法
2018/02/03 Javascript
angular实现页面打印局部功能的思考与方法
2018/04/13 Javascript
在小程序中使用canvas的方法示例
2018/09/17 Javascript
layui form表单提交后实现自动刷新
2019/10/25 Javascript
vue利用全局导航守卫作登录后跳转到未登录前指定页面的实例代码
2020/05/19 Javascript
vue+elementUI中表格高亮或字体颜色改变操作
2020/11/02 Javascript
django解决跨域请求的问题
2018/11/11 Python
OpenCV+Python识别车牌和字符分割的实现
2019/01/31 Python
PyQt5重写QComboBox的鼠标点击事件方法
2019/06/25 Python
python logging设置level失败的解决方法
2020/02/19 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
2020/07/03 Python
Python获取android设备cpu和内存占用情况
2020/11/15 Python
html5+svg学习指南之SVG基础知识
2014/12/17 HTML / CSS
Pottery Barn阿联酋:购买家具、家居装饰及更多
2019/12/08 全球购物
高中生学习生活的自我评价
2013/11/27 职场文书
奉献爱心演讲稿
2014/09/04 职场文书
车辆年检委托书范本
2014/10/14 职场文书
增值税发票丢失证明
2015/06/19 职场文书
名人传读书笔记
2015/06/26 职场文书
小学教师师德培训心得体会
2016/01/09 职场文书
一个成功的互联网创业项目,必须满足这些要求
2019/08/23 职场文书
警用民用对讲机找不同
2022/02/18 无线电