2013-03-14 111 views
0

因此我有一个有趣的问题。我有两个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); 

示例:如果

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

然后

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

为什么不能与那些条件延长您的查询? – 2013-03-14 15:54:10

+0

我试过了 - 我得到了非常奇怪的结果,基本上只显示了用户表中的所有用户乘以签名表中签名的数量。 – Peter 2013-03-14 15:56:58

+0

我仍然认为@ S.Visser的建议是可行的。在这种情况下,尝试使用连接(I **认为** INNER JOIN)执行查询。 – Awemo 2013-03-14 16:02:28

回答

1

使用和array_diff()http://php.net/manual/en/function.array-diff.php其方便的用于差异比较阵列和将返回AREN”在阵列1的结果的列表在数组2中,那么如果再次运行它,则相反,最终会得到2个只出现在父数组中的项而不是其他数组的项。

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

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

} 
相关问题