【发布时间】:2017-09-28 09:20:06
【问题描述】:
我有一个数组数组,当脚本运行时,它们的元素数可能不同。
$strict = [
[0] => ['one', 'two', 'three', 'four'],
[1] => ['one', 'two', 'four', 'eight'],
[2] => ['two', 'four', 'ten', 'twenty'],
/* [x] => [. . .] */
];
$result = array_intersect($strict[0], $strict[1], $strict[2]);
print_r($result); //shows ['two', 'four'];
我想做这样的事情:
$result = array_intersect($strict);
我传入一个动态长度的数组数组,array_intersect 将遍历每个数组并只获取公共条目。
执行array_intersect($strict) 不起作用,因为该函数至少需要两个参数。
可能是这样的
array_intersect(function ($array) {
$list = '';
foreach ($array as $el) {
$list .= $el.',';
}
$list = rtrim($list, ',');
return eval($list);
});
虽然这个特定的方法仍然会抛出错误
警告:array_intersect():至少需要 2 个参数,1 给定
【问题讨论】:
-
您是否要获取
$strict[0]中出现在$strict中的任何其他元素中的所有元素的列表? -
如果您使用 Mark Baker 的解决方案并使用 splat 运算符,那么只要 $strict 中至少有一个数组数组,您就可以调用 array_intersect 而不会引发警告。