如何通过另一个数组中不存在的人来过滤一个数组的记录



我有两个结果集:

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

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

我想循环浏览array2并消除array1

中确实存在的任何记录

由于某种原因,我无法使用此语法:

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

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

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

有很多方法可以解决。

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

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

我会像这样使用 array_diff

这就是我得到的

$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" }

最新更新