我需要获取所有数组中的值。示例:
$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()-
$result = array_intersect($array1, $array2, $array3);
但是我有一个大问题-我不知道我有多少个声明的数组(min = 0,max = 7)
$a = rand(true, false);
$b = rand(true, false);
if ($a) {
$array1 = [1,3,5,7];
}
if ($b) {
$array2 = [];
}
$array3 = [1,8,99];
如果我有$array2
-结果将为空数组[]。否则-结果为[1]。所以我只需要使用声明的数组。
我可以以另一种方式找到声明的数组
$all = [
$array1 ?? null,
$array2 ?? null,
$array3 ?? null,
];
foreach ($all as $key => $item) {
if ($item === null) {
unset($all[$key]);
}
}
但是我现在如何找到相交的值?
答案 0 :(得分:2)
使用call_user_func_array
或可变参数语法(自php5.6起):
array_intersect(...$all); // since php5.6
call_user_func_array('array_intersect', $all); // for versions older than php5.6