【问题标题】:php array_search 0 indexphp array_search 0 索引
【发布时间】: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吗?在提出此类问题之前,请尝试阅读文档并理解语言。

标签: php arrays search zero


【解决方案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){
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多