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脚本的10个技巧(1)
Oct 09 PHP
使用PHP获取网络文件的实现代码
Jan 01 PHP
PHP中SESSION使用中的一点经验总结
Mar 30 PHP
利用php+mcDropdown实现文件路径可在下拉框选择
Aug 07 PHP
PHP中常用的输出函数总结
Sep 22 PHP
php实现读取手机客户端浏览器的类
Jan 09 PHP
php简单实现无限分类树形列表的方法
Mar 27 PHP
php跨服务器访问方法小结
May 12 PHP
eclipse php wamp配置教程
Jun 30 PHP
PHP房贷计算器实例代码,等额本息,等额本金
Apr 01 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
May 11 PHP
PHP中mysqli_get_server_version()的实例用法
Feb 03 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
SONY SRF-40W电路分析
2021/03/02 无线电
利用PHP创建动态图像
2006/10/09 PHP
php笔记之常用文件操作
2010/10/12 PHP
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
php实现的CSS更新类实例
2014/09/22 PHP
php遍历CSV类实例
2015/04/14 PHP
用PHP生成excel文件到指定目录
2015/06/22 PHP
PHP实现通过二维数组键值获取一维键名操作示例
2019/10/11 PHP
IE event.srcElement和FF event.target 功能比较
2010/03/01 Javascript
jQuery中获取checkbox选中项等操作及注意事项
2013/11/24 Javascript
浅析JQuery UI Dialog的样式设置问题
2013/12/18 Javascript
js获取元素相对窗口位置的实现代码
2014/09/28 Javascript
javaScript实现滚动新闻的方法
2015/07/30 Javascript
jQuery 更改checkbox的状态,无效的解决方法
2016/07/22 Javascript
前端弹出对话框 js实现ajax交互
2016/09/09 Javascript
Node.js中如何合并两个复杂对象详解
2016/12/31 Javascript
在vue项目中使用element-ui的Upload上传组件的示例
2018/02/08 Javascript
理理Vue细节(推荐)
2019/04/16 Javascript
Bootstrap table 服务器端分页功能实现方法示例
2020/06/01 Javascript
[00:37]2016完美“圣”典风云人物:rOtk宣传片
2016/12/09 DOTA
python实现2048小游戏
2015/03/30 Python
详解python单例模式与metaclass
2016/01/15 Python
一百行python代码将图片转成字符画
2021/02/19 Python
python执行精确的小数计算方法
2019/01/21 Python
python定位xpath 节点位置的方法
2019/08/27 Python
Python实现投影法分割图像示例(一)
2020/01/17 Python
Python网络爬虫四大选择器用法原理总结
2020/06/01 Python
无需压缩软件,用python帮你操作压缩包
2020/08/17 Python
python 解决pycharm运行py文件只有unittest选项的问题
2020/09/01 Python
HTML5 canvas基本绘图之绘制阴影效果
2016/06/27 HTML / CSS
英国奢侈皮具品牌:Aspinal of London
2018/09/02 全球购物
合同和协议有什么区别?
2014/10/08 职场文书
旷工辞退通知书
2015/04/17 职场文书
网络研修心得体会
2016/01/08 职场文书
用python画城市轮播地图
2021/05/28 Python
Winsows11性能如何? win11性能测评多核竟比Win10差了10%
2021/11/21 数码科技