php array_search 0 索引

Posted

技术标签:

【中文标题】php array_search 0 索引【英文标题】:php array_search 0 index 【发布时间】:2013-04-02 19:10:07 【问题描述】:

似乎您不能使用 php 中的 search_array 函数来搜索 0 索引并将其评估为 true。

以这段代码为例:

$test=array(100, 101, 102, 103);

if($key=array_search(100,$test))

     echo $key;



else

     echo "Not found";

 

在大海捞针中找到针'100'并返回0。到目前为止一切顺利,但是当我评估搜索是否成功时它失败了,因为返回值为0,等于false !

php 手册建议使用 '!==' 但这样做不会返回键(数组索引),而是返回 1 或 0:

if($key=(array_search(103,$test)!== false))


那么我怎样才能成功地搜索数组,在 0 索引中找到匹配项并将其评估为 true?

【问题讨论】:

你没看到BIG RED BOX吗?在提出此类问题之前,请尝试阅读文档并理解语言。 【参考方案1】:

这在文档中明确提到。您需要使用===!==

$key = array_search(...);

if ($key !== false) ...

否则,当$key0 时,evaluates to false 在测试为布尔值时。

【讨论】:

你当然可以使用if( ($key = array_search(...)) !== false) 我阅读了几个主题,一遍又一遍地阅读手册,但找不到答案。我想我在代码的错误部分有'!=='。现在工作 - 谢谢!【参考方案2】:

第二个示例块中的条件将执行顺序优先级赋予 !== 运算符,但您希望做相反的事情。

if (($key = array_search(100,$test)) !== false) 

!==== 具有更高优先级,这使得括号是必需的。

【讨论】:

注意:这里是最正确的。如果我能从我糟糕的、陈旧的、幼稚的、现已删除的答案中转移赞成票,我会的。【参考方案3】:
$test=array(100, 101, 102, 103);

if (($key = array_search(100,$test)) === false) 
    echo "Not found";
 else
    echo $key;
 

【讨论】:

【参考方案4】:
$key = array_search($what, $array);
if($key !== false and $array[$key] == $what) 
 return true;

更安全

【讨论】:

【参考方案5】:
if(($key = array_search(103,$test)) !== false)


【讨论】:

以上是关于php array_search 0 索引的主要内容,如果未能解决你的问题,请参考以下文章

array_search 和销毁逻辑错误

php利用array_search与array_column实现二维数组查找

[PHP]:如果没有找到,array_search() 会返回啥?

php 去除数组中指定的值

php [php:array_search + array_column]来自db的saerch数组返回array_search + array_column。 #PHP

php [php:array_search()]按值搜索数组中的键。 #PHP