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 相关文章推荐
解决phpmyadmin 乱码,支持gb2312和utf-8
Nov 20 PHP
php生成随机密码的几种方法
Jan 17 PHP
php中全局变量global的使用演示代码
May 18 PHP
php笔记之:AOP的应用
Apr 24 PHP
php pki加密技术(openssl)详解
Jul 01 PHP
php四种基础算法代码实例
Oct 29 PHP
php jsonp单引号转义
Nov 23 PHP
Yii2中DropDownList简单用法示例
Jul 18 PHP
PHP面向对象学习之parent::关键字
Jan 18 PHP
PHP使用栈解决约瑟夫环问题算法示例
Aug 27 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
Jan 29 PHP
laravel 框架执行流程与原理简单分析
Feb 01 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
Ajax+PHP快速上手及简单应用说明
2013/07/24 PHP
smarty模板局部缓存方法使用示例
2014/06/17 PHP
PHP使用静态方法的几个注意事项
2014/09/16 PHP
jQuery 动画基础教程
2008/12/25 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/03 Javascript
jQuery focus和blur事件的应用详解
2014/01/26 Javascript
jQuery实现动画效果的简单实例
2014/01/27 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
2014/10/10 Javascript
基于javascript实现简单的抽奖系统
2020/04/15 Javascript
ASP.NET jquery ajax传递参数的实例
2016/11/02 Javascript
AngularJS表格添加序号的方法
2017/03/03 Javascript
TypeScript入门-接口
2017/03/30 Javascript
Vue组件tree实现树形菜单
2017/04/13 Javascript
微信小程序实现自定义modal弹窗封装的方法
2018/06/15 Javascript
详解Vue中数组和对象更改后视图不刷新的问题
2018/09/21 Javascript
elementUI 动态生成几行几列的方法示例
2019/07/11 Javascript
使用Vue CLI创建typescript项目的方法
2019/08/09 Javascript
[04:13]2018国际邀请赛典藏宝瓶Ⅱ饰品一览
2018/07/21 DOTA
在Python中用keys()方法返回字典键的教程
2015/05/21 Python
Python入门之后再看点什么好?
2018/03/05 Python
Python unittest 简单实现参数化的方法
2018/11/30 Python
想学python 这5本书籍你必看!
2018/12/11 Python
linux下安装python3和对应的pip环境教程详解
2019/07/01 Python
tensorflow 初始化未初始化的变量实例
2020/02/06 Python
HTML5等待加载动画效果
2017/07/27 HTML / CSS
行政助理岗位职责范文
2013/12/03 职场文书
优秀员工评语
2014/02/10 职场文书
质量承诺书范文
2014/03/27 职场文书
竞选班委演讲稿
2014/04/28 职场文书
高中运动会广播稿
2014/09/16 职场文书
2014年财政所工作总结
2014/11/22 职场文书
精神文明建设先进个人事迹材料
2014/12/24 职场文书
奖励申请报告范文
2015/05/15 职场文书
联谊会开场白
2015/06/01 职场文书
Java使用httpRequest+Jsoup爬取红蓝球号码
2021/07/02 Java/Android
vue 把二维或多维数组转一维数组
2022/04/24 Vue.js