2016-03-17 32 views
0

試圖在in_array()語句內使用從mysql查詢編譯的一串逗號分隔值。問題是,該聲明是因爲$array輸出不即使陣列的輸出粘貼不工作的in_array()功能工作失敗...在PHP in_array()語句中使用來自MySql Query的分解結果

$quiz = mysql_query("SELECT id FROM quiz WHERE quiz_page = '2'"); 
$array1=array(); 
while($quiz2 = mysql_fetch_assoc($quiz)) 
{ 
    $array1[]=$quiz2["id"]; 
} 
$array = implode(",", $array1); 
echo $array; 
echo '<br>'; 

if (in_array(184, array($array))) { 
echo '184 in $array'; 
} else { 
echo '184 not in $array'; 
} 
echo '<br>'; 

if (in_array(184, array(77,82,85,90,180,181,182,183,184,185))) { 
echo '184 in array'; 
} else { 
echo '184 not in array'; 
} 

上面的代碼的結果:

77,82,85,90,180,181,182,183,184,185 
184 not in $array 
184 in array 

回答

2

您需要檢查if (in_array(184, $array1)) {...$array1已將每個數字包含在單獨的元素中,就像您在第二個if條件(例如,

array(77,82,85,90,180,181,182,183,184,185) 

當你array($array)你得到一個元素,整個崩盤的字符串,例如數組

array("77,82,85,90,180,181,182,183,184,185") 

我不知道你這個做什麼,但它看起來你可能能夠通過只包括184查詢,以消除整個in_array問題

SELECT id FROM quiz WHERE quiz_page = '2' AND id = 184 

並檢查查詢是否返回任何內容。

+0

這工作,謝謝。 '184'僅用於演示目的。有沒有辦法在in_array()函數中用while循環使用mysql querry? – SailorJ

+0

對不起,我不確定你的意思。從我所看到的,在while循環中獲取是獲取查詢結果的常用方法。 –