这个问题在这里已经有一个答案:>
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