前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP中in_array奇怪的问题

PHP中in_array奇怪的问题

作者头像
XiaoA
发布2023-05-24 14:00:08
4140
发布2023-05-24 14:00:08
举报

    在in_array中有三个参数,一般用都是只用两个参数,如下以代码:

代码语言:javascript
复制
$arr = array('0E372033','0E372034','0E372035','0E372036','0E372037','0E372038','0E372039');

if(in_array('0E372031',$arr)){
        echo "true";
}
else{
        echo "false";
}

    按正常来说,这个肯定不在数组中,输出应该是false,但是这段代码输出却是true。

我又把代码改成如下:

代码语言:javascript
复制
$arr = array('0F372033','0F372034','0F372035','0F372036','0F372037','0F372038','0F372039');

if(in_array('0F372031',$arr)){
        echo "true";
}
else{
        echo "false";
}

    这个时候运行输出结果却是false。百思不得其解,到处请教和询问,终于找到了答案,原来0E372031这样的字符串在php的弱类型中会当着是科学计数法,所以就是0,这个时候判断in_array,和0E372033这样的值就相等了,解决方法就是如以下代码:

代码语言:javascript
复制
$arr = array('0E372033','0E372034','0E372035','0E372036','0E372037','0E372038','0E372039');

if(in_array('0E372031',$arr,true)){
        echo "true";
}
else{
        echo "false";
}

    用到in_array的第三个参数,强制判断其类型,这个时候输出false了,如果需要直接判断相等,请用’0E372031′ === ’0E372033′这样的判断才准确!

    以上是我自己在开发过程中遇到的问题,以记之。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2012-05-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档