PHP5.3中 in_array()的一个坑

简介:

因排查问题,发现目前生产环境的PHP版本5.3中有这个问题:

 

//php5.3

 

echo PHP_INT_MAX;

 

$str = "114100007160061630632";

$arr = array("114100007160061630631");

 

var_dump(in_array($str,$arr));

 

echo 'PHP:' .phpversion();

 

exit;

 

对于纯数字的非严格比较,因超出Int最大值,5.3中给出的是结果是 true.

5.5中验证是已经修复的.

 

解决方案:

可以添加第三个参数,严格比较。

var_dump(in_array($str,$arr, true));

 

但是严格比较请注意带来的新的问题:比方说 var_dump(in_array(1, array('1'), true))结果是false,是否影响原有程序

 

参考文档:

http://php.net/manual/zh/function.in-array.php

http://php.net/manual/zh/language.types.integer.php

http://php.net/manual/zh/types.comparisons.php

 

大家可以自己关注下。



















本文转自shayang8851CTO博客,原文链接:http://blog.51cto.com/janephp/1717088,如需转载请自行联系原作者

相关文章
|
5月前
|
测试技术 PHP 开发者
PHP 数组查找:为什么 `isset()` 比 `in_array()` 快得多?
PHP 数组查找:为什么 `isset()` 比 `in_array()` 快得多?
|
JavaScript 前端开发 PHP
|
搜索推荐 算法 PHP
PHP 数组(Array) - 排序算法
PHP 数组(Array) - 排序算法
220 0
|
PHP 索引
PHP 数组(Array)
PHP 数组(Array)
170 0
|
PHP
php函数基础学习:array_chunk() 函数把一个数组分割为新的数组块
php函数基础学习:array_chunk() 函数把一个数组分割为新的数组块
159 0
|
存储 JSON 安全
为什么我觉得GoFrame的garray比PHP的array还好用?
写过PHP的同学都知道 PHP的数组Array非常好用,特别灵活。我在写PHP之前使用Java做安卓开发,在接触PHP的数组Array之后,直呼太香了!
178 0
为什么我觉得GoFrame的garray比PHP的array还好用?
|
JSON PHP 数据库
PHP:Laravel cast array json数据存数据库时unicode 编码问题和update更新不触发数据转换
PHP:Laravel cast array json数据存数据库时unicode 编码问题和update更新不触发数据转换
290 0
PHP 简单 对象 (object) 与 数组 (array) 的转换
PHP 简单 对象 (object) 与 数组 (array) 的转换
|
PHP
【PHP】利用array_slice对数组进行分页
【PHP】利用array_slice对数组进行分页
247 0
【PHP】利用array_slice对数组进行分页