Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 迭代两个数组并比较结果以显示不匹配的结果_Php - Fatal编程技术网

Php 迭代两个数组并比较结果以显示不匹配的结果

Php 迭代两个数组并比较结果以显示不匹配的结果,php,Php,所以我有一个有趣的问题。我有两个userId和constract数组,我想比较一下,看看是否有匹配的结果。然后仅显示不匹配的。任何帮助都将不胜感激 //select all users and contracts possibilities $rQ = "SELECT users.userId AS userId, cId AS contractId, name, cTitle FROM contracts, users WHERE users.roleId = contracts.roleId

所以我有一个有趣的问题。我有两个userId和constract数组,我想比较一下,看看是否有匹配的结果。然后仅显示不匹配的。任何帮助都将不胜感激

//select all users and contracts possibilities
$rQ = "SELECT users.userId AS userId, cId AS contractId, name, cTitle FROM contracts, users WHERE users.roleId = contracts.roleId ORDER BY users.userId ASC ";
$rR = mysql_query($rQ);
$a = mysql_fetch_assoc($rR);

//selects current signatures in signatures table
$rQ1 = "SELECT userId, contractId FROM signatures ORDER BY userId ASC ";
$rR1 = mysql_query($rQ1);
$a1 = mysql_fetch_assoc($rR1);
示例:如果

$a['userId'] != $a1['userId'] && $a['contractId'] != $a1['contractId']
然后

使用array_diff()比较数组之间的差异非常方便,它将返回数组1中不在数组2中的结果列表,然后如果以另一种方式再次运行,将得到两个项目数组,它们只出现在父数组中的一个,而不出现在另一个


然后,您可以进行数组合并,以获得一个不在其中的术语的整体数组。

如果需要使用PHP,您可以执行以下操作:

foreach($a as $value ){

    if(!in_array($value,$a1)){
         $value1 = array_search($value,$a1);
        if(($value['userId']!=$value1['userId']) && (($value['contractId']!=$value1['contractId']) ))
            print_r($value);

}

为什么不使用这些条件扩展您的查询?我尝试过-我得到了非常奇怪的结果,基本上只是显示用户表中的所有用户乘以签名表中的签名数。我仍然认为@S.Visser的建议是可行的。在这种情况下,尝试使用联接(我认为是内部联接)进行查询。
foreach($a as $value ){

    if(!in_array($value,$a1)){
         $value1 = array_search($value,$a1);
        if(($value['userId']!=$value1['userId']) && (($value['contractId']!=$value1['contractId']) ))
            print_r($value);

}