array_search回报比较差异化



我想使用array_search来检测是否使用 if 语句找到匹配项。

  • array_search()在找不到匹配项时返回空 ''
  • 当匹配项索引为 0 时,array_search()返回 0
  • 当匹配项索引为非零值时,array_search()返回 0 以外的数字

如果我使用 != '',问题是 0 等同于 PHP 中的 ''。如何使用一个 if 语句解决此问题?

编辑:哎呀-array_search()不返回空,它返回false

实际上,如果没有找到匹配项,array_search返回false,而不是''。正如你所指出的,这在简单的相等比较(==!=(中与0相同,因为false可以被类型杂耍到0,所以你需要做一个严格的相等测试(===!==(,这也考虑了操作数的类型。由于false是布尔值,0是整数,因此此检查将失败。所以写这样的东西:

$key = array_search($value, $array);
if ($key !== false) {
// found
}
else {
// not found
}
我想使用

array_search 来检测是否使用 if 语句找到匹配项。

只是一个建议 - 您可能不需要使用array_search.

如果只是确定数组中是否存在某些内容,则可以改用in_array,它仅返回truefalse

如果您需要知道特定的索引,这将没有用,但如果您不这样做,它会稍微简单一些

最新更新