2012-01-25 160 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);