我真的需要帮助,这是我的功能。
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";
}
我一直不知道我做错了什么?
答案 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)
?