php:array_uintersect,具有动态数组数
我有一个php:array_uintersect,具有动态数组数,php,dynamic-arrays,Php,Dynamic Arrays,我有一个foreach循环,它返回可变数量的数组 我需要使用自定义函数在它们之间运行array\u uintersect,以查找公共元素,但array\u uintersect仅接受3个参数(2个数组和函数) 这就是我现在拥有的: $all_freaktag_favorites = array(); foreach ($serie_preferite as $serie_preferita) { $preferite_elements = pods('category', $serie
foreach
循环,它返回可变数量的数组
我需要使用自定义函数在它们之间运行array\u uintersect
,以查找公共元素,但array\u uintersect
仅接受3个参数(2个数组和函数)
这就是我现在拥有的:
$all_freaktag_favorites = array();
foreach ($serie_preferite as $serie_preferita) {
$preferite_elements = pods('category', $serie_preferita['term_id']);
$freaktag_preferita = $preferite_elements->field('freaktag');
$all_freaktag_favorites[] = $freaktag_preferita;
}
function comparaFreaktag($tag1, $tag2) {
return strcmp($tag1['term_id'], $tag2['term_id']);
};
$common_freaktag_between_favorites = array_uintersect(
$all_freaktag_favorites[0],
$all_freaktag_favorites[1],
'comparaFreaktag'
);
这将正确地返回循环中前两个数组之间的交集,但我不知道如何使用未定义数量的数组来执行此操作
谢谢 将所有数组放入父数组并使用扩展运算符:
$all = [[/** xxx */, [/** xxx */], [/** xxx */], ...];
$all[] = 'comparaFreaktag';
$common_freaktag_between_favorites = array_uintersect(...$all);
谢谢@Marvin,我已经在将所有数组包装到
$all\u freaktag\u favorites[]
中,所以我将您的代码改为:$common\u freaktag\u beforeign\u favorites=array\u uintersect(…$all\u freaktag\u favorites,'compareafreaktag')
但是这样做我得到了这个错误:致命错误:在参数解包后不能使用位置参数
我编辑了我的答案,标记
现在将被添加为$all
数组的最后一个元素,函数检测何时给出了可调用的/字符串并将其作为最后一个参数。这里测试:抱歉打扰了,有没有办法返回重复次数最多的元素而不是确切的交点?最好打开一个新问题