我有一个数组数组,在运行脚本时可能有不同的元素数。
$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 给定
答案 0 :(得分:4)
您可以使用call_user_func_array
:
使用参数数组
调用回调
所以你的回调是array_intersect
,你可以像这样传递你的数组:
$result = call_user_func_array('array_intersect', $strict);
答案 1 :(得分:2)
您可以利用现代PHP的阵列打包/解包功能 - 即变量,或所谓的" splat" (for (var child of childrenToOperateOn) {
console.log("Confirm child: " + child.todotask);
}
)运算符 - 以及:
...