如何获取出现在多个数组中的所有值?

How can I get all values, which occur in more than 1 array?

是否可以在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 中。

在多个数组中的任何匹配项。任何 hints/ideas?

您要找一个路口:http://php.net/manual/en/function.array-intersect.php

在您的情况下,您将需要对两个数组的每个组合执行交集的逻辑。

这应该适合你:

首先,您使用 array_unique(). Then you merge them together into one array with array_merge() and count all values with 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
)