如何获取出现在多个数组中的所有值?
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
)
是否可以在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
)