2012-02-15 60 views
1

我檢查是否複選框應針對用戶的喜好陣列的ID與檢查:PHP in_array返回假陽性

if(in_array($category['id'], $checkedarray)){ 
    $checked = "checked='checked'"; 
} 

檢查陣列的結果看起來是這樣的:

array(43) { 
[0]=> 
string(2) "31" 
[1]=> 
string(2) "32" 
[2]=> 
string(2) "34" 
[3]=> 
string(2) "35" 
} 

在上面的數組示例中,33仍然返回true,即使它不在那裏。

我已經嘗試使用:

(in_array($category['id'],$checkedarray, true) 

的結果與沒有嚴格的條件。

任何建議將不勝感激。

+0

可以把它上傳到代碼簿,確切的測試用例 – 2012-02-15 17:30:56

+1

if區塊缺少a)在打開{之前}。我猜這只是翻譯錯誤? – crush 2012-02-15 17:32:16

+0

對不起,這是一個錯字,我在這裏重新打印而不是複製/粘貼。我會在一秒鐘內改變它,但它確實有正確的括號,否則它會返回錯誤。 – Mike 2012-02-15 17:33:18

回答

2

33不會返回true - 您完全不會重置您的$checked變量。

if (true) { $checked = "checked" }; 
if (false) { /* never gets executed */ } 

add one else!

if (in_array(33, $checkedarray)) { 
    $checked = "checked='checked'"; 
} else { 
    $checked = ""; 
} 
+0

我覺得自己就像一個工具,做出了這樣的假設,即空白的條件幾乎是這樣做的。 – Mike 2012-02-15 17:46:06

+0

我還有一個,但它是空白的,如在其他{//} – Mike 2012-02-15 17:47:49

+0

不要打垮自己了。我知道這一點的唯一原因是因爲我去過那裏:) – Mikhail 2012-02-15 18:04:09