<分区>
$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 与任何给定的干草堆相匹配?
<分区>
$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"
。
关于php - in_array() 总是返回 TRUE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23735704/