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

时间:2015-08-01 13:51:44

标签: php arrays match array-intersect

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中。

多个数组中的任何匹配项。任何提示/想法?

2 个答案:

答案 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

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