【问题标题】:Php array search not workingPHP数组搜索不起作用
【发布时间】:2011-10-04 16:11:39
【问题描述】:

您好,这里真的需要帮助是我的职责。

function isdAuthorTrue( $post_id ) { 


    $coauthors = get_post_meta( $post_id, "coAuthors" );

    print_r($coauthors);
    // print_r output Array ( [0] => 78 )

     $key = array_search( 78, $coauthors );
     $key = 0;
     if($key !== false) {

       return true;

     } else {

         return false;
          }
}

然后我正在尝试做,如果围绕它的声明不起作用。

$test = isdAuthorTrue( 102 );

echo $test;

if($test){

    echo "yes";

}else{

    echo "no";
}

我一直不知道我做错了什么???

【问题讨论】:

    标签: php arrays search


    【解决方案1】:

    您得到“否”,因为 array_search 返回键,在本例中为 0。 PHP 将其评估为false。编辑:没有注意到严格的比较——不,没有。

    另外,您将$key 明确设置为0...

    【讨论】:

    • 呃,不,用户使用的是===而不是==(带有魔法类型转换)0!==false0==false
    • 不是这样,他使用的是!==而不是!=,所以也会检查类型。 0 == false 将返回 true0 === false 不会。
    【解决方案2】:

    Array serach 返回 needle 的 key 为 0 即为 false。你应该这样做。

    if($test !== false){
    
        echo "yes";
    
    }else{
    
        echo "no";
    }
    

    【讨论】:

      【解决方案3】:

      为什么设置$key = 0$key 是索引。所以它永远不是FALSE。 为什么不使用in_array($needle, $haystack)

      【讨论】:

        【解决方案4】:

        正如@marc 指出的那样,您可以只使用 in_array... 并将整个函数简化为一行:

        function isdAuthorTrue($post_id,$authorid=78) { 
            return in_array($authorid,get_post_meta( $post_id, "coAuthors"));
        }
        

        【讨论】:

          猜你喜欢
          • 2011-10-04
          • 2015-07-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-04-05
          • 2015-08-06
          • 1970-01-01
          相关资源
          最近更新 更多