PHP-php使用in_array的一个问题

PHP-php使用in_array的一个问题

夜无邪 发布于 2016-12-30 字数 275 浏览 997 回复 1

在开发的过程中碰到的一个问题:
$a = array('123',123);
var_dump(in_array('t123t',$a));
var_dump(in_array('t123',$a));
var_dump(in_array('123t',$a));
前两个返回的是bool(false),而第三个却返回bool(true)。
谁能帮解答一下为什么,以后如何避免。

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

泛泛之交 2017-01-04 1 楼

in_array默认采用的是宽松比较,你的数组里有一个123,在比较时‘123t’会默认被转化成int型来比较,就像var_dump('123t'==123);返回的结果是true一样,看看in_array 的定义:

bool in_array ( mixed $needle , array $haystack [, bool $strict ] )

所有使用时,加上第三个参数为true,就能严格比较了,就不会出现你上面的问题了

$a = array('123',123);
var_dump(in_array('123t',$a,true));