我想使用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
,它仅返回true
或false
。
如果您需要知道特定的索引,这将没有用,但如果您不这样做,它会稍微简单一些。