PHP-php使用in_array的一个问题

发布于 2016-12-30 07:37:43 字数 226 浏览 1087 评论 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)。
谁能帮解答一下为什么,以后如何避免。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

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

评论(1

泛泛之交 2017-01-04 00:15:34

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));

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文