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的ob_start();控制您的浏览器cache!
Feb 14 PHP
php mysql索引问题
Jun 07 PHP
Windows7下PHP开发环境安装配置图文方法
May 20 PHP
php 截取字符串并以零补齐str_pad() 函数
May 07 PHP
PHP系统命令函数使用分析
Jul 05 PHP
php模拟ping命令(php exec函数的使用方法)
Oct 25 PHP
php预定义变量使用帮助(带实例)
Oct 30 PHP
php+ajax实现无刷新的新闻留言系统
Dec 21 PHP
Laravel实现自定义错误输出内容的方法
Oct 10 PHP
php获取访问者浏览页面的浏览器类型
Jan 23 PHP
php处理多图上传压缩代码功能
Jun 13 PHP
PHP 99乘法表的几种实现代码
Oct 13 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开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
2014/04/21 PHP
PHP函数eval()介绍和使用示例
2014/08/20 PHP
PHP实现伪静态方法汇总
2016/01/13 PHP
THINKPHP截取中文字符串函数实例代码
2017/03/20 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
2017/07/13 PHP
PHP文件上传小程序 适合初学者学习!
2019/05/23 PHP
javascript function、指针及内置对象
2009/02/19 Javascript
主页面中的两个iframe实现鼠标拖动改变其大小
2013/04/16 Javascript
把Node.js程序加入服务实现随机启动
2015/06/25 Javascript
jQuery实现的类似淘宝网站搜索框样式代码分享
2015/08/24 Javascript
Markdown+Bootstrap图片自适应属性详解
2016/05/21 Javascript
基于jQuery实现咖啡订单管理简单应用
2017/02/10 Javascript
老生常谈jquery中detach()和remove()的区别
2017/03/02 Javascript
微信小程序 引入es6 promise
2017/04/12 Javascript
运用jQuery写的验证表单(实例讲解)
2017/07/06 jQuery
浅谈Vue网络请求之interceptors实际应用
2018/02/28 Javascript
微信小程序利用Canvas绘制图片和竖排文字详解
2019/06/25 Javascript
JavaScript遍历数组和对象的元素简单操作示例
2019/07/09 Javascript
[00:33]DOTA2上海特级锦标赛 CDEC战队宣传片
2016/03/04 DOTA
[00:12]DAC SOLO赛卫冕冠军 VG.Paparazi灬展现SOLO技巧
2018/04/06 DOTA
[45:52]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第二场 12.09
2020/12/12 DOTA
总结网络IO模型与select模型的Python实例讲解
2016/06/27 Python
Python编程中对super函数的正确理解和用法解析
2016/07/02 Python
简单谈谈Python中的json与pickle
2017/07/19 Python
python 反向输出字符串的方法
2018/07/16 Python
python logging模块的使用总结
2019/07/09 Python
利用Pandas和Numpy按时间戳将数据以Groupby方式分组
2019/07/22 Python
大女孩胸罩:Big Girls Bras
2016/12/15 全球购物
早餐连锁店计划书
2014/01/08 职场文书
施工安全生产承诺书
2014/05/23 职场文书
社区禁毒工作方案
2014/06/02 职场文书
副主任竞聘演讲稿
2014/08/18 职场文书
财政局党的群众路线教育实践活动整改方案
2014/09/21 职场文书
自愿离婚协议书范文2014
2014/10/12 职场文书
Nginx禁止ip访问或非法域名访问
2022/04/07 Servers
Redis实现订单过期删除的方法步骤
2022/06/05 Redis