PHP5.3中 in_array()的一个坑

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

 

//php5.3 ide

 

echo PHP_INT_MAX;spa

 

$str = "114100007160061630632";.net

$arr = array("114100007160061630631");ci

 

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

 

echo 'PHP:' .phpversion();get

 

exit;it

 

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

5.5中验证是已经修复的.function

 

解决方案:

能够添加第三个参数,严格比较。

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

 

你们能够本身关注下。

相关文章
相关标签/搜索