您现在的位置是:首页 > 文章详情

【PHP】in_array需要注意的点

日期:2018-04-19点击:548
in_array (PHP 4, PHP 5, PHP 7) in_array — 检查数组中是否存在某个值 说明 ---- bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] ) 大海捞针,在大海(haystack)中搜索针( needle),如果没有设置 strict 则使用宽松的比较。 参数 ---- needle 待搜索的值。 Note: 如果 needle 是字符串,则比较是区分大小写的。 haystack 待搜索的数组。 strict 如果第三个参数 strict 的值为 TRUE 则 in_array() 函数还会检查 needle 的类型是否和 haystack 中的相同。 返回值 ---- 如果找到 needle 则返回 TRUE,否则返回 FALSE。

看问题:

<?php $array = range(0, 7); $string = 's'; if (in_array($string, $array)) { echo 1; } else { echo 2; } // 输出结果为 1

很显然这并不是我们期望的结果。但究竟为啥会这样呢?

因为in_array()会将0's'进行比较,0number类型,'s'string类型,根据php manualComparison Operators一章的说明可知,numberstring进行比较的时候,会先将string类型首先转化为number,然后再进行比较操作。 's'转化为number的结果为0,而0 == 0的结果是true,所以in_array($string, $array)的结果也是 true

如果把in_array()的第三个参数strict设置为true,比较的时候就会判断值和类型是否都相等。如果都相等的话,才会返回true,否则返回false

原文链接:https://yq.aliyun.com/articles/583508
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章