PHP数组_udiff()未按预期工作

PHP数组_udiff()未按预期工作,php,Php,我试图用另一个数组的前三个字段检查数组的前三个字段,以获得唯一值。(假设由三列组成的主键想要添加表中不存在的行) 这是到目前为止我的代码 function udiffanswers($a, $b) { if ($a['aid']==$b['aid'] && $a['qid']==$b['qid'] && $a['sid']==$b['sid']){ return 0 } else { return -1

我试图用另一个数组的前三个字段检查数组的前三个字段,以获得唯一值。(假设由三列组成的主键想要添加表中不存在的行)

这是到目前为止我的代码

function udiffanswers($a, $b) {   
    if ($a['aid']==$b['aid'] && $a['qid']==$b['qid'] && $a['sid']==$b['sid']){
        return 0
    } else {
        return -1
    }
}
我的一个数组x具有值(459458,0461541),而我的另一个数组y具有相同的值,并且没有正确地排除它。此外,如果y具有值(459458,1461541),则不应排除它,因为它作为一个整体是唯一的

示例数据将是
$a

  [1] => Array
    (
        [aid] => 10
        [qid] => 10
        [sid] => 10
        [freetext] => sq file
        [a] => hi
        [b] => 
        [c] => 
        [d] => 
        [e] => 
        [f] => 
        [g] => 
        [h] => 
        [i] => 
        [j] => 
        [type] => freetext
        [location] => 
    )

[2] => Array
    (
        [aid] => 10
        [qid] => 1
        [sid] => 10
        [freetext] => diff
        [a] => diff
        [b] => diff
        [c] => diff
        [d] => diff
        [e] => diff
        [f] => diff
        [g] => diff
        [h] => diff
        [i] => diff
        [j] => diff
        [type] => diff
        [location] => diff
    )
[23] => Array
    (
        [aid] => 10
        [qid] => 2
        [sid] => 10
        [freetext] => adfadf
        [a] => adfadf
        [b] => adfadf
        [c] => adfadf
        [d] => adfadf
        [e] => adfadf
        [f] => adfadf
        [g] => adfadf
        [h] => adfadf
        [i] => adfadf
        [j] => adfadf
        [type] => adfadf
        [location] => adfadf
    )
   [50] => Array
    (
        [aid] => 10
        [qid] => 10
        [sid] => 10
        [freetext] => sq file
        [a] => hi
        [b] => 
        [c] => 
        [d] => 
        [e] => 
        [f] => 
        [g] => 
        [h] => 
        [i] => 
        [j] => 
        [type] => freetext
        [location] => 
    )
$b

  [1] => Array
    (
        [aid] => 10
        [qid] => 10
        [sid] => 10
        [freetext] => sq file
        [a] => hi
        [b] => 
        [c] => 
        [d] => 
        [e] => 
        [f] => 
        [g] => 
        [h] => 
        [i] => 
        [j] => 
        [type] => freetext
        [location] => 
    )

[2] => Array
    (
        [aid] => 10
        [qid] => 1
        [sid] => 10
        [freetext] => diff
        [a] => diff
        [b] => diff
        [c] => diff
        [d] => diff
        [e] => diff
        [f] => diff
        [g] => diff
        [h] => diff
        [i] => diff
        [j] => diff
        [type] => diff
        [location] => diff
    )
[23] => Array
    (
        [aid] => 10
        [qid] => 2
        [sid] => 10
        [freetext] => adfadf
        [a] => adfadf
        [b] => adfadf
        [c] => adfadf
        [d] => adfadf
        [e] => adfadf
        [f] => adfadf
        [g] => adfadf
        [h] => adfadf
        [i] => adfadf
        [j] => adfadf
        [type] => adfadf
        [location] => adfadf
    )
   [50] => Array
    (
        [aid] => 10
        [qid] => 10
        [sid] => 10
        [freetext] => sq file
        [a] => hi
        [b] => 
        [c] => 
        [d] => 
        [e] => 
        [f] => 
        [g] => 
        [h] => 
        [i] => 
        [j] => 
        [type] => freetext
        [location] => 
    )

应该从
$a
返回
数组[2]
,但它也返回重复的数组

从数组中切片前三个元素并比较它们

$newA = array_splice($a,0,3);
$newB = array_splice($b,0,3);

print_r(array_diff_assoc($newA, $newB));

请发布您的示例数据和所需结果返回($a['aid']-$b['aid'])&&($a['qid']-$b['qid'])&($a['sid']-$b['sid']);将返回TRUE或FALSE。在上面发布了一些示例数据