查找任意数量 (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)
}
我有针对每个客户的代码 $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)
}