在php中使用array_udiff进行多个字段

时间:2013-11-24 01:25:04

标签: php

我试图为我的脚本创建一个自定义函数,它检查两个数组的一个索引,并依赖于自定义函数,它返回不在两个数组中的所有行。 当我必须只检查一个值时,它运行良好:

function udifflink($a, $b)
{
  return $a['linkid'] - $b['linkid'];
}
//compare links array
$diffinlinks = array_udiff($row, $surveys, 'udifflink');
echo "diff results \n"; 
print_r($diffinlinks);

但是当我有数组,我需要检查两个字段的组合相等(这是一个主键是两列的数据库表)它不能按预期工作。我尝试了多种解决方案,但这是我最近的解决方案:

function udiffanswers($a, $b)
{
 return $a['aid'].$a['sid'] - $b['aid'].$b['sid'];
}

不排除援助和sid相同的地方

//array a
[16] => Array
    (
        [aid] => 16
        [qid] => 16
        [sid] => 16
        [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
    )
 //array b
 [17] => Array
    (
        [aid] => 16
        [qid] => 17
        [sid] => 16
        [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
    )

 [18] => Array
    (
        [aid] => 16
        [qid] => 18
        [sid] => 18
        [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
    )
 [19] => Array
    (
        [aid] => 17
        [qid] => 18
        [sid] => 16
        [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
    )

应该从上面返回18和19个数组

这是我尝试的其他东西...不确定如何从多个ifs获得结果...

function udiffanswers($a, $b)
{   
if($a['aid'] - $b['aid']){
if($a['sid'] - $b['sid']){
return $a;
}
}
return 0;
}

0 个答案:

没有答案