手机
当前位置:查字典教程网 >编程开发 >php教程 >PHP字符串 ==比较运算符的副作用
PHP字符串 ==比较运算符的副作用
摘要:复制代码代码如下:$a='212345678912000005';$b='212345678912000001';var_dump($a==...

复制代码 代码如下:

$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文件读取功能的应用实例

PHP实现过滤掉非汉字字符只保留中文字符

PHP中的命名空间详细介绍

PHP的栏目导航程序

php简单实现多字节字符串翻转的方法

PHPlet在Windows下的安装

PHP中显示格式化的用户输入

PHP处理密码的几种方式

PHP中的traits简单使用实例

PHP截取中文字符串的问题

精品推荐
分类导航