0

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

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

4

2 回答 2

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
)
于 2015-08-01T14:14:18.590 回答
-1

你要求一个交叉点:http: //php.net/manual/en/function.array-intersect.php

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

于 2015-08-01T14:05:23.223 回答