php array_diff没有给出结果

时间:2012-07-19 09:09:16

标签: php mysql array-difference

有人可以看看,让我知道我做错了什么...... 我想要实现的是,在数据库中我有:

AGENT_REF = 1
AGENT_REF = 2
AGENT_REF = 3
AGENT_REF = 4
AGENT_REF = 5

在上传的文件中解析信息

$blmarArray = array($agentref);

AGENT_REF = 1
AGENT_REF = 2
AGENT_REF = 3
AGENT_REF = 5

我想要发生的是从上传文件中不存在的数据库中提取AGENT_REF,在这种情况下AGENT_REF = 4所以我可以从mysql中删除它。

$sql_archeck = mysql_query("SELECT `AGENT_REF` FROM `eprentals`");
$archeck = mysql_fetch_array($sql_archeck);
$sqlarArray = array($archeck);
$combyArrayDiff = array_diff($blmarArray, $sqlarArray);
print_r ($combyArrayDiff);

我所得到的是数据库中的最后一个或第一个AGENT REF,而不是数据库中不存在的那个。 (在数据库中有11个,但上传的文件只有8个,所以我想删除(显示)已从上传的文件中删除的数据库中的那些文件)

希望你能为我提供一些指导,告诉我错误的地方,感谢你的时间,并恭喜你的帮助!

1 个答案:

答案 0 :(得分:2)

来自php手册:

  

返回一个数组,其中包含array1中未包含的所有条目   存在于任何其他阵列中。

array_diff($blmarArray, $sqlarArray) {}}您应该使用array_diff($sqlarArray, $blmarArray)

=大数组作为第一个参数,samller数组作为第二个参数


您还需要从数据库中获取所有行,而不仅仅是第一行

$query = "SELECT `AGENT_REF` FROM `eprentals`";
$resource = mysql_query($query);
$sqlarArray = array();
while($row = mysql_fetch_array($sql_archeck))
{
    $sqlarArray[] = $row['AGENT_REF'];
}
$combyArrayDiff = array_diff($sqlarArray, $blmarArray);

/* debug result */
echo "<p><b>SQL list:</b> " . implode(', ', $sqlarArray) . "</p>";
echo "<p><b>Uploaded list:</b> " . implode(', ', $blmarArray) . "</p>";
echo "<p><b>Diff list:</b> " . implode(', ', $combyArrayDiff ) . "</p>";