php array_diff 没有给出结果

标签 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);

我得到的只是数据库中的最后一个或第一个代理引用,而不是数据库中不存在的代理引用。 (数据库中有 11 个,但上传的文件仅存在 8 个,因此我想删除(显示)数据库中已从上传的文件中删除的文件)

希望您能为我提供一些指导,以找出我的错误所在,感谢您的宝贵时间并感谢您的帮助!

最佳答案

来自 php 手册:

Returns an array containing all the entries from array1 that are not present in any of the other arrays.

因此安装了array_diff($blmarArray, $sqlarArray),您应该使用array_diff($sqlarArray, $blmarArray)

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

<小时/>

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

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

关于php array_diff 没有给出结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11557496/

相关文章:

c - 根据位置每 3 个元素从数组中删除元素

c++ - 无法在 Visual Studio 2015 的 C++ 程序中链接 MySQL

mysql - innodb_log_file_size 将如何影响性能?

java - HTTP 状态 500 - 在第 6 行处理 JSP 页面/login.jsp 时发生异常。(错误消息标题)

Javascript 数组和对象 : Get differences and merge them

PHP:不区分大小写 "array_diff"

php - 使用 fputcsv php 在导出时添加标题

PHP - IF 语句为假,仍然运行

php - 用户输入是否进入 Controller 或模型?

php - 啊!存折 - 表格未更新