4

我正在创建一个多面搜索,我正在尝试使用它array_intersect来比较数组并找到匹配的输入。

问题是我将随时根据用户选择的过滤器拥有可变数量的数组:

$array_1, $array_2, $array_3ETC...

在这个意义上,我如何创建一个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});
        }
    }
}

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

我将尝试进一步缩小我的目标:

如果用户单击三个过滤器,则会创建三个数组,每个数组都有单独的结果:

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。

4

4 回答 4

15

尝试这个:

$fullArray = array($array1, $array2, $array3...);
call_user_func_array('array_intersect', $fullArray);
于 2012-11-08T10:45:47.843 回答
5

一个可以使用:

$intersect = array_intersect(...$fullArray);
于 2019-07-19T08:16:48.547 回答
2

首先,将这些数组变成数组数组。然后,您可以使用array_reduce组合 witharray_intersect将可变数量的数组减少到一个。

于 2012-09-12T04:11:13.257 回答
0

$total_array您可以将这些数组转换为以 using命名的单个数组array_combine(),然后使用array_intersect($full_array, $total_array). 我希望这有用

于 2012-09-12T04:29:56.833 回答