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函数
Oct 09 PHP
一个用于网络的工具函数库
Oct 09 PHP
收藏的一个php小偷的核心程序
Apr 09 PHP
PHP 设计模式之观察者模式介绍
Feb 22 PHP
php生成二维码的几种方式整理及使用实例
Jun 03 PHP
thinkphp中连接oracle时封装方法无法用的解决办法
Jun 17 PHP
php中限制ip段访问、禁止ip提交表单的代码分享
Aug 22 PHP
PHP遍历文件夹与文件类及处理类用法实例
Sep 23 PHP
php使用ZipArchive函数实现文件的压缩与解压缩
Oct 27 PHP
smarty中改进truncate使其支持中文的方法
May 30 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
Oct 30 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
Nov 10 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
再说下636单管机
2021/03/02 无线电
PHP与MySQL交互使用详解
2006/10/09 PHP
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
PHP将XML转数组过程详解
2013/11/13 PHP
php 读写json文件及修改json的方法
2018/03/07 PHP
js几个不错的函数 $$()
2006/10/09 Javascript
学习YUI.Ext 第六天--关于树TreePanel(Part 2异步获取节点)
2007/03/10 Javascript
JavaScript Accessor实现说明
2010/12/06 Javascript
JS远程获取网页源代码实例
2013/09/05 Javascript
js AppendChild与insertBefore用法详细对比
2013/12/16 Javascript
js data日期初始化的5种方法
2013/12/29 Javascript
JS操作iframe里的dom(实例讲解)
2014/01/29 Javascript
JS+CSS实现带关闭按钮DIV弹出窗口的方法
2015/02/27 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
2015/09/21 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
2016/05/10 Javascript
详细谈谈javascript的对象
2016/07/31 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
2016/10/05 Javascript
JavaScript 控制字体大小设置的方法
2016/11/23 Javascript
node.js基于mongodb的搜索分页示例
2017/01/22 Javascript
基于LayUI实现前端分页功能的方法
2017/07/22 Javascript
bootstrap switch开关组件使用方法详解
2017/08/22 Javascript
vue2.0 下拉框默认标题设置方法
2018/08/22 Javascript
[00:32]10月24、25日 辉夜杯外卡赛附加赛开赛!
2015/10/23 DOTA
python 获取文件列表(或是目录例表)
2009/03/25 Python
使用Protocol Buffers的C语言拓展提速Python程序的示例
2015/04/16 Python
在Python中的Django框架中进行字符串翻译
2015/07/27 Python
利用Python实现Windows定时关机功能
2017/03/21 Python
Python算术运算符实例详解
2017/05/31 Python
Django Admin设置应用程序及模型顺序方法详解
2020/04/01 Python
利用CSS3实现自定义滚动条代码分享
2016/08/18 HTML / CSS
公司周年庆典邀请函
2014/01/12 职场文书
四川成都导游欢迎词
2014/01/18 职场文书
幼儿园中班教师寄语
2014/04/03 职场文书
爱祖国演讲稿
2014/05/04 职场文书
房屋登记授权委托书范本
2014/10/09 职场文书
python开发的自动化运维工具ansible详解
2021/08/07 Python