2014-10-28 80 views
-2

in_array心不是找到我的陣列PHP in_array沒有找到數

的print_r的 $supparr

內的數字:

Array ([0] => 1 [1] => 2) 

代碼:

if(in_array($r->prodid, $supparr)){ echo 'yes' ; }else{ echo 'no'; } 

我回顯$ R-> PRODID並且它很好地顯示了數字1.數字1在數組中,所以我無法弄清楚爲什麼in_array沒有選擇它? 它總是返回沒有結果。我曾嘗試下面的硬編碼1,並把它在speechmarks,仍然沒有結果:

if(in_array(1, $supparr)){ echo 'yes' ; }else{ echo 'no'; } 

任何想法?

+1

代替'var_dump()'代替兩者。它會顯示類型和字符串的長度。如果那裏有些愚蠢的東西,像不可打印的字符,隱藏的html等等,它可能會拋棄比賽。 – 2014-10-28 18:53:53

+0

沒關係我解決了它! – user2355278 2014-10-28 19:02:04

+1

哇,謝謝你的否定,讓我禁止球員。非常感激。 – user2355278 2014-10-29 12:42:53

回答

1

使用array_search()或者你有幾種解決問題的方法。一個是要輸入正確的。設置第三個參數true檢查所提供和正在檢查的值的類型。

if(in_array($r->prodid, $supparr, true)){ 
    echo 'yes' ; 
}else{ 
    echo 'no'; 
} 

第二種方法是鍵入強制轉換或僅將該數字設置爲字符串。

if(in_array("$r->prodid", $supparr)){ 
    echo 'yes' ; 
}else{ 
    echo "no"; 
} 
+1

如果你解釋過,這將有所幫助1)OP使用的方法有什麼問題。 2)爲什麼這些「更好」。鑑於所提供的代碼的工作原理如下。 – 2014-10-28 18:52:34

+0

它在兩種情況下都有效嗎? – 2014-10-28 18:55:41

+0

如果您修改提供的''鍵盤'示例使用字符串,然後它仍然正常工作。 PHP根據需要進行「自動類型轉換」。 – 2014-10-28 18:57:54