将php字符串与列进行比较.不匹配的内容


compare php string to column.. what is not matching?

我有一个php逗号分隔的字符串$string = (x,y,z)

我在mysql中有一个列,它包含项目(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);应返回array()

数组不同,因为您在$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);

使用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值强制转换为相同的数据类型。

试试这个,

$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);

首先用逗号explode()字符串,然后用array_diff()计算差值。