$arrValue = array('first', 'second');
$ret = in_array(0, $arrValue);
var_dump($ret);
var_dump($arrValue);
Run Code Online (Sandbox Code Playgroud)
以上示例给出以下结果:
bool(true)
array(2) {
[0]=> string(5) "first"
[1]=> string(6) "second"
}
Run Code Online (Sandbox Code Playgroud)
为什么in_array()
将针0与任何给定的干草堆相匹配?
Gol*_*rol 18
那是因为该函数使用了非严格的比较.数组中的字符串与整数0进行比较.某些类型转换正在发生数据丢失,两者都被视为相同:
var_dump(0 == 'first'); // bool(true)
Run Code Online (Sandbox Code Playgroud)
因此,解决此问题,您可以使用第三个参数并将其设置为true以请求严格比较.
$ret = in_array(0, $arrValue, true);
Run Code Online (Sandbox Code Playgroud)
请记住,严格是非常严格的.在严格的比较中,0
并不等于"0"
.
文件:http://nl3.php.net/in_array
归档时间: |
|
查看次数: |
2286 次 |
最近记录: |