PHP-php使用in_array的一个问题
在开发的过程中碰到的一个问题:
$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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(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));