You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用数组元素自动填充函数参数?不定长子数组的多维数组交集求解

用数组元素自动填充函数参数,实现动态子数组的交集计算

刚好之前处理过类似的场景,当子数组数量不固定时,确实没法硬写array_intersect的参数,给你两个实用的方案,按需选择:

方案一:PHP 5.6+ 推荐使用——展开运算符(...)

这个语法是PHP 5.6引入的,能直接把数组拆成函数的独立参数,代码简洁到爆炸:

$list = [ [0,1,2], [2,5], [-1,2] ];
// 不管$list里有10个还是更多子数组,都不用改代码
$intersection = array_intersect(...$list);
print_r($intersection);

原理很简单:...$list会把数组中的每个一级子数组,依次作为单独的参数传递给array_intersect,完全替代手动写$list[0], $list[1], ...的麻烦。

方案二:兼容旧版本PHP——call_user_func_array

如果你的项目还在使用PHP 5.5及以下版本,可以用call_user_func_array函数来实现动态传参:

$list = [ [0,1,2], [2,5], [-1,2] ];
// 先处理空数组的边界情况,避免报错
if (empty($list)) {
    $intersection = [];
} else {
    // 第一个参数是要调用的函数名,第二个参数是参数数组
    $intersection = call_user_func_array('array_intersect', $list);
}
print_r($intersection);

这个函数的作用就是把第二个参数的数组元素,逐个作为参数传递给第一个参数指定的函数,完美适配参数数量不确定的场景。

额外提醒

别忘了处理$list为空的情况哦,不管用哪种方案,如果$list是空数组,直接调用会触发错误,提前判断一下能让代码更健壮。

内容的提问来源于stack exchange,提问作者clarkk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:11:56