php - 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
解决方案
所以,我没有注意到 PHP.net 上的警告:
此函数可能返回布尔值 FALSE,但也可能返回计算结果为 FALSE 的非布尔值。请阅读有关布尔值的部分以获取更多信息。使用
===
操作符来测试这个函数的返回值。
@nickb 是正确的:它需要与false
显式进行比较,因为如果找到它,它会返回找到的元素的键或索引,并且可以在执行时返回该元素的0
值。false
if ($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)
所以,换句话说,它被发现了!
推荐阅读
- php - Xdebug - Visual Studio 代码 - 进入/跳过 - 没有任何反应
- google-docs - 向 Google Docs API 发出请求时出现错误 401(未经身份验证)
- flutter - 如何知道用户的当前位置是否在折线内或附近?
- java - 点燃堆不释放,这是内存泄漏?
- wordpress - 使用 ob_start 在 Wordpress 中搜索和替换文本
- mysql - 在历史数据中查找日期不正确的行
- javascript - 具有 onclick 功能的显示省略号仅显示长内容的内容
- python - 调用另一个 nohup 的 python 代码的 nohup 问题?
- react-native - 每次在反应本机中聚焦页面时调用 componentWillMount
- java - 使用 Java 上的目标凭据进行 Google Cloud Storage URL 签名