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

Array_diff()不能为php中从同一个表中获取的两个数组生成正确的输出,php,mysql,Php,Mysql,我编写的代码是从表中获取概要文件id,我想要一个不常见的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

我编写的代码是从表中获取概要文件id,我想要一个不常见的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\u diff\u assoc
,因为它会检查键和值,因此如果第二个数组中有一些相同的键,但顺序不同,则不会匹配它们。只需一个简单的
数组_diff
就可以更好地工作

其次,除非您没有显示其他代码,
$result1
不包含9和11,因为
mysql\u fetch\u assoc
,(或者
mysqli\u fetch\u assoc
,如果您升级到受支持的接口),只从结果中获取一行

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

但您根本不必在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
循环完成的

警告:如果你只是在学习PHP,请不要学习过时的界面。这很糟糕,已经在PHP7中删除了。替换类和指南类有助于解释最佳实践。请确保您的用户参数正确无误,否则将导致严重后果。感谢好友的建议。我得到了想要的输出,实际上我忘记了我需要运行一个循环来获得所有的数组元素。