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模板引擎SMARTY
Oct 09 PHP
PHP中通过ADO调用Access数据库的方法测试不通过
Dec 31 PHP
php生成SessionID和图片校验码的思路和实现代码
Mar 10 PHP
PHP Zip解压 文件在线解压缩的函数代码
May 26 PHP
PHP5中虚函数的实现方法分享
Apr 20 PHP
基于PHP magic_quotes_gpc的使用方法详解
Jun 24 PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
Nov 03 PHP
php中print(),print_r(),echo()的区别详解
Dec 01 PHP
在win系统安装配置 Memcached for PHP 5.3 图文教程
Mar 03 PHP
php实现简单的权限管理的示例代码
Aug 25 PHP
Laravel框架搜索分页功能示例
Feb 01 PHP
PHP操作Redis常用命令的实例详解
Dec 23 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
冰滴咖啡制作步骤
2021/03/03 冲泡冲煮
php分页示例代码
2007/03/19 PHP
Yii2.0预定义的别名功能小结
2016/07/04 PHP
微信红包随机生成算法php版
2016/07/21 PHP
THinkPHP获取客户端IP与IP地址查询的方法
2016/11/14 PHP
PHP实现财务审核通过后返现金额到客户的功能
2019/07/04 PHP
laravel 关联关系遍历数组的例子
2019/10/10 PHP
用js实现上传图片前的预览(TX的面试题)
2007/08/14 Javascript
使用Nodejs开发微信公众号后台服务实例
2014/09/03 NodeJs
JavaScript实现图片DIV竖向滑动的方法
2015/04/25 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
2015/11/07 Javascript
Flow之一个新的Javascript静态类型检查器
2015/12/21 Javascript
JavaScript动态设置div的样式的方法
2015/12/26 Javascript
JavaScript入门教程之引用类型
2016/05/04 Javascript
Angular中使用$watch监听object属性值的变化(详解)
2017/04/24 Javascript
JavaScript使用readAsDataURL读取图像文件
2017/05/10 Javascript
jQuery使用zTree插件实现可拖拽的树示例
2017/09/23 jQuery
React 组件渲染和更新的实现代码示例
2019/02/21 Javascript
vue实现路由监听和参数监听
2019/10/29 Javascript
Vue简单封装axios之解决post请求后端接收不到参数问题
2020/02/16 Javascript
angular组件间通讯的实现方法示例
2020/05/07 Javascript
使用Django的模版来配合字符串翻译工作
2015/07/27 Python
深入理解python中的浅拷贝和深拷贝
2016/05/30 Python
简单实现python收发邮件功能
2018/01/05 Python
Python语言的变量认识及操作方法
2018/02/11 Python
解决.ui文件生成的.py文件运行不出现界面的方法
2019/06/19 Python
PIL图像处理模块paste方法简单使用详解
2019/07/17 Python
在python中利用pycharm自定义代码块教程(三步搞定)
2020/04/15 Python
使用HTML5做的导航条详细步骤
2020/10/19 HTML / CSS
Michael Kors英国官网:美国奢侈品品牌
2019/11/13 全球购物
校长寄语大全
2014/04/09 职场文书
中层干部竞聘演讲稿
2014/05/15 职场文书
企业趣味活动方案
2014/08/21 职场文书
邀请书格式范文
2015/02/02 职场文书
vue首次渲染全过程
2021/04/21 Vue.js
PyTorch梯度裁剪避免训练loss nan的操作
2021/05/24 Python