查找任意数量 (n) 个数组的交集(n <= 6,总是),PHP

Finding the intersection of an arbitrary number (n) of arrays (n <= 6, always), PHP

我有针对每个客户的代码 $client 我最终得到了一组企业 ID $ids[]。我可以在代码中的任何时候在这个函数中最多可以有 6 个客户端,客户端存储在客户端对象内的它们自己的数组中。

我想弄清楚的是,在不知道脚本的任何给定 运行 对象中有多少客户端的情况下,我如何找到业务 ID 的交集,所以我可以获取出现在所有客户记录中的 ID 列表吗?

我知道我可以使用 array_intersect($arr1, arr2, ...) 等等,但这需要我事先知道我正在比较哪些数组,在这种情况下,数组是动态生成的,所以我不能手动将 $id 数组添加到 array_intersect()。

我很难弄清楚如何找到所有数组的交集。有没有办法传入一个函数作为 array_intersect() 的参数?也许作为一个闭包?如果是这样,我将如何实现?

我想你可以使用 splat 运算符

<?php

$clients = [
    [1,2,3],
    [1,5,6],
    [1,7,8],
];

var_dump(array_intersect(...$clients));
array(1) {
  [0]=>
  int(1)
}