php - in_array() 总是返回 TRUE

标签 php arrays

<分区>

$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

关于php - in_array() 总是返回 TRUE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23735704/

相关文章:

php - 将站点安全依赖于 $_SESSION 是否安全?

c++ - typedef int array[3] 和 typedef int(array)[3] 有什么区别?

arrays - 如何获取数组的最后一个元素并显示其余元素?

javascript - 添加到javascript中复杂类型的数组

php - 使用PHP中的套接字编程(Erlang)聊天应用程序

php - 使用带有数据库信息 PHP 的 for 循环输入

javascript - 重定向到 PHP 中的新选项卡

php - 连接数组的所有值

c - 重新分配 double 组

php - 如何让我的 PHP 更新功能发挥作用?