欢迎访问宙启技术站
智能推送

使用PHP函数array_intersect()取交集来比较两个数组

发布时间:2023-09-15 16:58:06

array_intersect()是PHP的一个内置函数,用于比较两个或多个数组的交集。它接受一个或多个数组作为参数,并返回包含这些数组共有的值的新数组。

函数语法:

array array_intersect ( array $array1 , array $array2 [, array $... ] )

其中,$array1和$array2是需要比较的两个数组,$...是可选的其他数组,可以用来进行多个数组的比较。

函数返回值是一个新的数组,其中包含了所有输入数组中共有的值。这个新数组的索引顺序是根据 个输入数组的索引顺序来排序。

以下是一个简单的例子,演示如何使用array_intersect()函数来比较两个数组:

$array1 = [1, 2, 3, 4, 5];
$array2 = [3, 4, 5, 6, 7];

$intersection = array_intersect($array1, $array2);

print_r($intersection);

在上面的例子中,$array1包含了数字1到5,而$array2包含了数字3到7。通过调用array_intersect()函数,我们可以得到这两个数组的交集,即包含数字3、4和5的新数组。

输出结果:

Array
(
    [2] => 3
    [3] => 4
    [4] => 5
)

可以看到,输出的新数组中,键为2的元素对应着数字3,键为3的元素对应着数字4,键为4的元素对应着数字5。这是因为 个输入数组$array1的索引顺序是从0开始的,而 个输入数组$array2中的元素3在$array1中索引为2,元素4在$array1中索引为3,元素5在$array1中索引为4。

array_intersect()函数还可以对更多的数组进行比较,只需在函数参数中传入相应的数组即可。

例如,我们有一个包含一些名字的数组和一个包含一些邮箱地址的数组,我们希望找到既有名字又有邮箱地址的交集。可以像下面这样使用array_intersect()函数:

$names = ['John', 'Jane', 'Mike', 'Alice'];
$emails = ['John@example.com', 'Mike@example.com', 'Alice@example.com', 'Bob@example.com'];

$intersection = array_intersect($names, $emails);

print_r($intersection);

输出结果:

Array
(
    [0] => John
    [2] => Mike
    [3] => Alice
)

可以看到,输出的新数组包含了既有名字又有邮箱地址的元素,即名字John、Mike和Alice。

总结来说,PHP的array_intersect()函数非常方便地提供了比较多个数组并得到交集的功能。无论是简单的数字数组,还是包含复杂结构的关联数组,都可以使用这个函数来进行比较和操作。同时,可以根据 个输入数组的索引顺序来排序输出结果,从而保持了交集元素的对应关系。