Array_diff()不能为php中从同一个表中获取的两个数组生成正确的输出
我编写的代码是从表中获取概要文件id,我想要一个不常见的id,但当我使用array_diff或array_diff_assoc时,输出是[]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
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中删除了。替换类和指南类有助于解释最佳实践。请确保您的用户参数正确无误,否则将导致严重后果。感谢好友的建议。我得到了想要的输出,实际上我忘记了我需要运行一个循环来获得所有的数组元素。