gpt4 book ai didi

php - Array_diff() 不会为从 php 中的同一个表获取的两个数组生成正确的输出

转载 作者:行者123 更新时间:2023-11-28 23:20:21 25 4
gpt4 key购买 nike

我写的代码是从表中获取配置文件 ID,我想要不常见的,但是当我使用 array_diff 或 array_diff_assoc 时,结果是 []

require_once __DIR__  .'/connect.php';
$db = new DB_CONNECT();


$result = mysql_query("select PROFILE_ID from chat_group_members where GROUP_ID =4");
$reg = mysql_query("select PROFILE_ID from chat_group_members where GROUP_ID = 5");

$reg1 = mysql_fetch_assoc($result);//result is profile_id 9
$result1 = mysql_fetch_assoc($reg);//result is profile_id 9 and Profile id 11

$result2=array_diff_assoc($result1,$reg1);
echo json_encode ($result2);
//output is blank []

最佳答案

首先,如果你打算用 PHP 做这个,不要为此使用 array_diff_assoc,因为它会检查键和值,所以如果你有一些相同的键第二个数组,但顺序不同,它不会匹配它们。只是一个普通的 array_diff 会更好。

其次,除非有其他你没有显示的代码,$result1 包含 9 和 11,因为 mysql_fetch_assoc,(或mysqli_fetch_assoc 如果您升级到受支持的接口(interface))仅从您的结果中提取一行

在进行比较之前,您需要获取所有结果。

但是您根本不必在 PHP 中执行此操作。您可以改为使用一个查询来完成。有几种方法可以做到;一种方法是对子查询使用 NOT IN

SELECT PROFILE_ID FROM chat_group_members 
WHERE GROUP_ID = 5
AND PROFILE_ID NOT IN (SELECT PROFILE_ID FROM chat_group_members WHERE GROUP_ID = 4)

但是您仍然需要获取所有结果。这通常使用 while 循环来完成。 You can see some examples in the mysqli documentation here .

关于php - Array_diff() 不会为从 php 中的同一个表获取的两个数组生成正确的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41986924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com