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'] 
4

2 回答 2

1

使用 array_diff() http://php.net/manual/en/function.array-diff.php它可以方便地比较数组的差异,并将返回数组 1 中不在数组 2 中的结果列表,然后如果你以另一种方式再次运行它,您最终会得到 2 个项目数组,它们只出现在您的一个父数组中,而不是另一个。

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

于 2013-03-14T15:56:37.733 回答
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);

}
于 2013-03-14T15:57:45.343 回答