php – in_array()总是返回TRUE

这个问题在这里已经有一个答案:> PHP in_array() / array_search() odd behaviour2
$arrValue = array('first','second');
$ret = in_array(0,$arrValue);
var_dump($ret);
var_dump($arrValue);

以上示例给出以下结果:

bool(true)
array(2) {
  [0]=> string(5) "first"
  [1]=> string(6) "second"
}

为什么in_array()匹配针0到任何给定的干草堆?

这是因为该功能使用了非严格的比较.数组中的字符串与整数0进行比较.某些类型转换正在发生数据丢失,并且都被视为相同:
var_dump(0 == 'first'); //  bool(true)

所以解决这个问题,可以使用第三个参数设置为true来请求严格的比较.

$ret = in_array(0,$arrValue,true);

牢记,严格严格.在严格的比较中,0不等于“0”.

文件http://nl3.php.net/in_array

相关文章

Hessian开源的远程通讯,采用二进制 RPC的协议,基于 HTTP 传输。可以实现PHP调用Java,Python,C#等多语...
初识Mongodb的一些总结,在Mac Os X下真实搭建mongodb环境,以及分享个Mongodb管理工具,学习期间一些总结...
边看边操作,这样才能记得牢,实践是检验真理的唯一标准.光看不练假把式,光练不看傻把式,边看边练真把式....
在php中,结果输出一共有两种方式:echo和print,下面将对两种方式做一个比较。 echo与print的区别: (...
在安装好wampServer后,一直没有使用phpMyAdmin,今天用了一下,phpMyAdmin显示错误:The mbstring exte...
变量是用于存储数据的容器,与代数相似,可以给变量赋予某个确定的值(例如:$x=3)或者是赋予其它的变...