比较两个和三个数组是否包含相同的值

问题描述

我有3个数组。 $eldest_range $second_range $third_range

$eldest_range = range($start_year1,$end_year1);
print_r($eldest_range);

$second_range = range($start_year2,$end_year2);
print_r($second_range);

$third_range = range($start_year3,$end_year3);
print_r($third_range);

哪个返回: <br> Array ( [0] => 2030 [1] => 2031 [2] => 2032 [3] => 2033 [4] => 2034 [5] => 2035 ) <Br> Array ( [0] => 2032 [1] => 2033 [2] => 2034 [3] => 2035 [4] => 2036 [5] => 2037 ) <br> Array ( [0] => 2034 [1] => 2035 [2] => 2036 [3] => 2037 [4] => 2038 [5] => 2039 ) <Br>

我想比较这些数组。检查彼此之间是否存在任何一种。因此,在上述情况下,1和2共享2032,而1,2和3共享2034。

我宁愿成对地检查它们,然后以三个为一组。 (1&2-1&3-2&3-1,2&3)

这就是我尝试过的。这是长子第二:

$result=array_intersect_assoc($eldest_range,$second_range);
print_r($result);

不返回任何内容array() 而且我也尝试过。

$result=array_intersect_key($eldest_range,$second_range);
print_r($result);

仅返回整个$eldest_range

Array ( [0] => 2030 [1] => 2031 [2] => 2032 [3] => 2033 [4] => 2034 [5] => 2035 )

我使用错误array_intersect()吗?我只想查看2个数组中的任何值。和3个数组(如上所述)。

谢谢

解决方法

有时候,读一则manual(表示array_intersect_assoc

非常有用

使用附加索引检查计算数组的交集

您需要此索引检查吗? 绝对不是

您需要的是简单的array_intersect

$eldest_range = range(2030,2035);
$second_range = range(2032,2037);
$third_range = range(2034,2039);
print_r(array_intersect($eldest_range,$second_range));   // [2032,2033,2034,2035]
print_r(array_intersect($eldest_range,$second_range,$third_range)); // [2034,2035]