array_intersect可变数量的数组

geo*_*trl 4 php arrays variables loops array-intersect

我正在创建一个分面搜索,我正在尝试array_intersect比较数组并找到匹配的输入.

问题是我随时会有可变数量的数组,具体取决于用户选择的过滤器:

$array_1, $array_2, $array_3 等等...

如何array_intersect在这种意义上创建一个动态的函数?

这就是我尝试过的:

$next_array = 0;
for($i = 0; $i < $array_count; $i++) {
    $next_array++;
    if ($i == 0) {
        $full_array = ${array_.$i};
    } else {
        if(!empty(${cvp_array.$next_array})) {
            $full_array = array_intersect($full_array, ${cvp_array_.$next_array});
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

-------------编辑-------------

我会尝试更多地缩小我的目标:

如果用户单击三个过滤器,则会生成三个阵列,每个阵列都有单独的结果:

Array_1 ( [0] => 2, [1] => 4, [2] => 6 )

Array_2 ( [0] => 1, [1] => 4, [2] => 6 )

Array_3 ( [0] => 6, [1] => 7, [2] => 8 )

我需要能够找到所有数组中的数字的代码.如果没有共同的数字,那么它将以虚假或其他方式结束.在上面的例子中,我需要它来检索6.如果它只是前两个数组,它将返回4和6.

小智 14

试试这个:

$fullArray = array($array1, $array2, $array3...);
call_user_func_array('array_intersect', $fullArray);
Run Code Online (Sandbox Code Playgroud)


scu*_*ube 5

可以使用:

$intersect = array_intersect(...$fullArray);
Run Code Online (Sandbox Code Playgroud)