2013-11-24 49 views
0

我想檢查數組的前三個字段與另一個數組的前三個來獲取唯一值。 (想想三列組成的主鍵要添加已經不在表中的行)PHP array_udiff()不能按預期工作

這是我到目前爲止的代碼

function udiffanswers($a, $b) { 
    if ($a['aid']==$b['aid'] && $a['qid']==$b['qid'] && $a['sid']==$b['sid']){ 
     return 0 
    } else { 
     return -1 
    } 
} 

我的一個陣列x具有值(459458,0, 461541)和我的其他y有相同的價值,並沒有正確排除它。如果y的值是(459458,1,461541),它也不應該排除它,因爲它作爲一個整體是唯一的。

樣本數據會$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 
    ) 

$b

[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] => 
    ) 

應返回從$aarray[2],但它也從你的陣列

+1

請發表您的樣本數據和期望的結果 –

+0

回報($ A [ '援助'] - $ B [ '援助'])&&($ A [ 'QID'] - $ B [ 'QID' ]))&&($ a ['sid'] - $ b ['sid']);會返回TRUE或FALSE。 – Jompper

+0

在上面發佈了一些示例數據 –

回答

0

片前三個元素返回數組重複並比較它們。

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

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