在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′这样的判断才准确!
以上是我自己在开发过程中遇到的问题,以记之。