$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"
}
Why in_array()
将针 0 与任何给定的干草堆匹配?
这是因为该函数使用非严格比较。数组中的字符串与整数 0 进行比较。一些类型转换会导致数据丢失,并且两者被视为相同:
var_dump(0 == 'first'); // bool(true)
所以解决这个问题,可以使用第三个参数,设置为true来要求严格比较。
$ret = in_array(0, $arrValue, true);
请记住,严格确实是严格。严格比较的话,0
不等于"0"
.
Docs: http://nl3.php.net/in_array
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)