首页 > 解决方案 > array_search 找不到以 `@` 开头的字符串

问题描述

即使对于 PHP,这似乎也很奇怪。我正在搜索一个@以数组开头的字符串,它总是返回 false:

php > var_dump($re)
php > ;
array(2) {
  [0]=>
  string(12) "@MaxyMixalot"
  [1]=>
  string(5) "GEzim"
}
php > print(array_search('GEzim', $re));
1
php > print(array_search('@MaxyMixalot', $re));
0

标签: phparrays

解决方案


所以,我没有注意到 PHP.net 上的警告:

此函数可能返回布尔值 FALSE,但也可能返回计算结果为 FALSE 的非布尔值。请阅读有关布尔值的部分以获取更多信息。使用===操作符来测试这个函数的返回值。

@nickb 是正确的:它需要与false显式进行比较,因为如果找到它,它会返回找到的元素的键或索引,并且可以在执行时返回该元素的0值。falseif ($something)...

php > var_dump($re);
array(2) {
  [0]=>
  string(4) "@max"
  [1]=>
  string(5) "Gezim"
}
php > var_dump(array_search('@max', $re) === false);
bool(false)

所以,换句话说,它被发现了!


推荐阅读