Php阵列搜索不起作用

时间:2011-07-13 16:39:55

标签: php arrays search

我真的需要帮助,这是我的功能。

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";
}

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

4 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

数组搜索返回0的针的键,即false。你应该这样做。

if($test !== false){

    echo "yes";

}else{

    echo "no";
}

答案 3 :(得分:0)

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