如何使用另一个数组中不存在的数组过滤一个数组的记录?

时间:2017-10-01 06:10:39

标签: php laravel

我有两个结果集:

$array1 = (0=>'name1',1=>'name2');

$array2 = (0=>'name',1=>'name1',2=>'name2',3=>'name4');

我想遍历array2并消除array1中存在的任何记录

出于某种原因,我不能使用这种语法:

select * where not in(select ....)

2 个答案:

答案 0 :(得分:0)

对于具有该键的多个字段的SQL select,您可以使用以下语法...

SELECT *
FROM CompletedTasks
WHERE (userID, taskID) NOT IN
      ( SELECT userID, taskID
        FROM PlannedTasks
      ) ;

答案 1 :(得分:0)

有很多方法可以解决这个问题。

您可以将两个数组合并为一个,然后使用array_unique过滤重复值。

其他方法是使用array_diff仅返回array2而不是array1的唯一值。

我会像这样使用$array1 = ['name1', 'name2', 'surname2', 'surname3']; $array2 = ['name', 'name1', 'name2', 'name4', 'surname', 'surname3', 'surname2']; var_dump(array_diff($array2, $array1)); array(3) { [0]=> string(4) "name" [3]=> string(5) "name4" [4]=> string(7) "surname" }

这就是我得到的

ms