我有一个用逗号分隔的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() 最佳答案
使用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'的所有区别都相同,这就是为什么它返回整个数组的原因。尝试将元素值转换为相同的数据类型。