2012-01-25 78 views
0

我有逗號在MySQL分隔的字符串 $string = (x,y,z)將php字符串與列進行比較..什麼不匹配?

我有一個塔的PHP具有項目(Y,Z)

我想使是在串而不是在項目的數組表列...

$cid = "'" . str_replace(",", "','", $cid) . "'"; 

    $query = mysql_query("SELECT save_key FROM saved WHERE save_key IN ($cid)"); 

    while ($result = mysql_fetch_assoc($query)){ 
     $array[] = $result['save_key']; 
    } 

    $cid_array = explode(',',$cid); 

    $dif = array_diff($cid_array, $array); 

    print_r($dif); 

輸出:從查詢

陣列([0] => O45527 [1] => P97387 [2] => Y49437)

從array_dif

陣列([0] => 'P97387'[1] => 'O45527'[2] => 'Y49437') 所有項目都是一樣的權利..

print_r($dif);應返回陣列( )

+1

兩個因素被認爲是平等的,當且僅當(字符串)$ elem1 ===(字符串)$ elem2時。用詞表示:當字符串表示是相同的。看到我的回答 – 2012-01-25 05:56:40

回答

0

使用array_diff - 它計算數組

的區別只是使用explode轉換您的字符串數組,並使用array_diff

例子:

<?php 

$array1=explode(",",$string); 
$array2=explode(",",$yourstring_of_db_column); 
$array1 = array("x", "y", "z"); 
$array2 = array("y","z"); 
$result = array_diff($array1, $array2); 

print_r($result); 
?> 

注:有兩個因素被認爲是平等的,如果並且僅當(string)$ elem1 ===(string)$ elem2。用詞表示:當字符串表示是相同的。從查詢

陣列([0] => O45527 [1] => P97387 [2] => Y49437)從array_dif

陣列([0] => 'P97387'[1] =>「O45527 '[2] =>'Y49437')

所以O45527和'O45527'是不同的,這就是爲什麼它返回整個數組。嘗試將elemet值轉換爲相同的數據類型。

+0

謝謝Teez ...我修改了代碼,以便我有兩個版本的$ cid不帶引號的數組和一個帶引號的逗號分隔的字符串,用於IN子句中的查詢... –

+0

好的。在你以前的問題中同樣的問題:) – 2012-01-25 06:17:54

0

試試這個,

$str_array = explode($string); 

//database row 
$row_array = explode($row->string); 

$result = array_diff($str_array, $row_array); 
//your resultant array is $result. 

print_r($result); 
1

數組是不一樣的,因爲你周圍添加引號$ CID。

$quoted_cid = "'" . str_replace(",", "','", $cid) . "'"; 

$query = mysql_query("SELECT save_key FROM saved WHERE save_key IN ($quoted_cid)"); 

while ($result = mysql_fetch_assoc($query)){ 
    $array[] = $result['save_key']; 
} 

$cid_array = explode(',',$cid); 

$dif = array_diff($cid_array, $array); 

print_r($dif);