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

时间:2013-03-14 15:50:30

标签: php

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

//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);

示例:if

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

然后

echo $a['name'] . $a['cTitle'] 

2 个答案:

答案 0 :(得分:1)

使用array_diff()http://php.net/manual/en/function.array-diff.php比较数组的差异很方便,并返回数组1中不在数组2中的结果列表然后再次运行它反过来你将结束最多只有2个项目数组,这些项目只出现在您的父数组之一而不是另一个数组中。

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

答案 1 :(得分:0)

如果您需要使用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);

}