2013-03-14 110 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); 

} 
相關問題