php - 在数组中查找相交值
问题描述
我需要获取所有数组中的值。例子:
$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]);
}
}
但是我现在如何找到相交的值?
解决方案
使用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
推荐阅读
- pyqt - 工作线程和主线程中的 PyQt QMutex
- python - Python“请求”包在启动特定网站的HTTP连接时非常慢
- mysql - 使用 laravel 插入多个复选框值
- jquery - 如何以 ZIP 格式下载多个文件
- r - 通过前行的多个条件填充 NA
- system-verilog - 监视器/驱动程序与其 BFM 之间的虚拟接口 ??? 它们实际上是什么,有人可以解释一下吗?
- html - 我需要一些帮助,这个页脚没有我想要的响应
- java - Dagger 2 Singleton 和 Activity 级别的依赖关系
- javascript - 直接使用数组或将其分配给变量并使用它哪个更好?
- python - 匹配列表中的一对一值