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防攻击代码升级版
Dec 29 PHP
PHP设计模式之结构模式的深入解析
Jun 13 PHP
PHP使用内置dir类实现目录遍历删除
Mar 31 PHP
php+ajax无刷新分页实例详解
Dec 07 PHP
功能强大的php文件上传类
Aug 29 PHP
thinkphp配置文件路径的实现方法
Aug 30 PHP
yii2使用GridView实现数据全选及批量删除按钮示例
Mar 01 PHP
POST一个JSON格式的数据给Restful服务实例详解
Apr 07 PHP
PHP框架laravel的.env文件配置教程
Jun 07 PHP
Laravel框架实现利用监听器进行sql语句记录功能
Jun 06 PHP
基于php+MySql实现学生信息管理系统实例
Aug 04 PHP
PHP之header函数详解
Mar 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获取当前网址及域名的实现代码
2013/06/23 PHP
PHP实现采集抓取淘宝网单个商品信息
2015/01/08 PHP
功能强大的php文件上传类
2016/08/29 PHP
php通过PHPExcel导入Excel表格到MySQL数据库的简单实例
2016/10/29 PHP
PHP的微信支付接口使用方法讲解
2019/03/08 PHP
php设计模式之职责链模式定义与用法经典示例
2019/09/19 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
JavaScript去除空格的几种方法
2006/10/03 Javascript
js字符串截取函数substr substring slice使用对比
2013/11/27 Javascript
JQuery结合CSS操作打印样式的方法
2013/12/24 Javascript
node.js中的fs.lchown方法使用说明
2014/12/16 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
浅谈javascript函数式编程
2015/09/06 Javascript
JavaScript ParseFloat()方法
2015/12/18 Javascript
ECMAScript6 新特性范例大全
2017/03/24 Javascript
基于 webpack2 实现的多入口项目脚手架详解
2017/06/26 Javascript
AngularJS页面带参跳转及参数解析操作示例
2017/06/28 Javascript
Vue中建立全局引用或者全局命令的方法
2017/08/21 Javascript
JS实现的计数排序与基数排序算法示例
2017/12/04 Javascript
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
小程序点赞收藏功能的实现代码示例
2018/09/07 Javascript
Python ljust rjust center输出
2008/09/06 Python
用Python实现一个简单的多线程TCP服务器的教程
2015/05/05 Python
Python脚本实现Web漏洞扫描工具
2016/10/25 Python
python fabric实现远程部署
2017/01/05 Python
python smtplib模块自动收发邮件功能(一)
2018/05/22 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
2020/03/10 Python
猫途鹰英国网站:TripAdvisor英国(旅游社区和旅游评论)
2016/08/30 全球购物
英国现代绅士品牌:Hackett
2017/12/17 全球购物
高中生的自我评价
2014/03/04 职场文书
技术总监管理岗位职责
2014/03/09 职场文书
党的群众路线教育实践活动公开承诺书
2014/03/28 职场文书
英语课前三分钟演讲稿(6篇)
2014/09/13 职场文书
机关作风建设工作总结
2014/10/23 职场文书
小学二年级语文教学反思
2016/03/03 职场文书
生鲜超市—未来中国最具有潜力零售业态
2019/08/02 职场文书