Php 在数组中查找相交值

Php 在数组中查找相交值,php,arrays,Php,Arrays,我需要获取所有数组中的值。例如: $array1 = [1,3,6,7]; $array2 = [63,34,1,2]; $array3 = [1,7,5,2]; $array4 = []; 答案-空数组[] $array1 = [1,3,6,7]; $array2 = [63,34,1,2]; $array3 = [1,7,5,2]; 答复-[1] 我可以用array_intersect()来做 但是我有一个大问题——我不知道我有多少个声明的数组(min=0,max=7) 如果我有$arr

我需要获取所有数组中的值。例如:

$array1 = [1,3,6,7];
$array2 = [63,34,1,2];
$array3 = [1,7,5,2];
$array4 = [];
答案-空数组[]

$array1 = [1,3,6,7];
$array2 = [63,34,1,2];
$array3 = [1,7,5,2];
答复-[1]

我可以用array_intersect()来做

但是我有一个大问题——我不知道我有多少个声明的数组(min=0,max=7)

如果我有
$array2
-结果将由空数组[]生成。Else-结果为[1]。所以我只需要使用声明的数组

下一步我可以找到声明数组

$all = [
    $array1 ?? null,
    $array2 ?? null,
    $array3 ?? null,
];

foreach ($all as $key => $item) {
    if ($item === null) {
        unset($all[$key]);
    }
}

但是我现在如何找到相交的值呢?

使用
调用用户函数数组
或变量语法(从php5.6开始):

$a = rand(true, false);
$b = rand(true, false);
if ($a) {
    $array1 = [1,3,5,7];
}
if ($b) {
    $array2 = [];
}
$array3 = [1,8,99];
$all = [
    $array1 ?? null,
    $array2 ?? null,
    $array3 ?? null,
];

foreach ($all as $key => $item) {
    if ($item === null) {
        unset($all[$key]);
    }
}
array_intersect(...$all);   // since php5.6

call_user_func_array('array_intersect', $all);  // for versions older than php5.6