PHP是否可以交叉检查数组的所有匹配项并将结果存储到数组中?我找到了`array_intersect(),但是这个函数只返回第一个数组的结果。并且只有值存在于所有数组中。
示例输入:
Array 1 = 1,2,3
Array 2 = 4,5,6
Array 3 = 6,7,8
Array 4 = 3,9,10
现在我需要一个能让我回头的数组。在这个例子中,它将是:
result = 3,6
因为“3”在数组1和数组4中,结果“6”在数组2和数组3中。
多个数组中的任何匹配项。任何提示/想法?
答案 0 :(得分:1)
这应该适合你:
首先,使用array_unique()
从每个数组中获取所有唯一值。然后,将它们合并为一个包含array_merge()
的数组,并使用array_count_values()
计算所有值。
在此之后,您只需使用array_filter()
过滤所有值,这些值不超过1个数组,并且您有预期的结果。
要翻转数组,只需使用array_keys()
。
<?php
$count = array_count_values(array_merge(array_unique($arr1), array_unique($arr2), array_unique($arr3), array_unique($arr4)));
$result = array_keys(array_filter($count, function($v){
return $v >= 2;
}));
print_r($result);
?>
输出:
Array
(
[0] => 3
[1] => 6
)
答案 1 :(得分:-1)
你要求一个十字路口:http://php.net/manual/en/function.array-intersect.php
在你的情况下,你需要逻辑来对两个数组的每个组合执行交集。