2011-07-13 60 views
2

您真的需要幫助,這裏是我的功能。Php數組搜索不起作用

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

由於array_search返回密鑰,在這種情況下爲0,您會得到「否」。 PHP將其評估爲false。編輯:沒有注意到嚴格的比較 - 沒有它沒有。

此外,你明確地設定$key0 ...

+0

呃不,用戶使用''===不''== (使用魔術類型轉換)'0!== false','0 == false' – Rudu

+1

不是這種情況,他使用'!=='而不是'!='來檢查類型。 '0 == false'將返回'true','0 === false'不會。 – Endophage

0

陣列檢索算法返回是0,其假針的關鍵。你應該做。

if($test !== false){ 

    echo "yes"; 

}else{ 

    echo "no"; 
} 
0

爲什麼設置$key = 0$key是索引。所以它永遠不是FALSE。 爲什麼不使用in_array($needle, $haystack)

1

由於@marc指出的那樣,你可以使用in_array ...上下簡化整個功能一行:

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