首页 > 文章列表 > PHP8中的数组函数:array_intersect()的多种用途

PHP8中的数组函数:array_intersect()的多种用途

php 数组函数 array_intersect()
269 2023-05-16

在PHP编程语言中,数组是一个非常常用的数据类型。数组函数是对数组进行操作的函数,是PHP编程中使用最广泛的函数之一。其中,array_intersect()是一个非常强大的数组函数,主要用于比较两个或多个数组中的值,并返回它们的交集。除此之外,array_intersect()还有很多其他用途,本文将详细介绍。

一、基本用法

array_intersect()函数可以接受两个或多个数组,并返回它们的交集。下面是一个简单的例子,介绍如何使用这个函数:

// 定义两个数组
$array1 = array("a" => "apple", "b" => "banana", "c" => "cherry");
$array2 = array("a" => "orange", "b" => "banana", "d" => "date");

// 获取两个数组的交集
$result = array_intersect($array1, $array2);

// 输出结果
print_r($result);

运行上述代码,你会得到以下输出:

Array
(
    [b] => banana
)

可以看到,$array1和$array2的交集中只包含了一个元素"banana",这是因为这是两个数组中唯一相同的值。

二、多种用途

除了基本的用法,array_intersect()函数还可以用于很多其他的情况,下面我们将逐一介绍。

  1. 比较多个数组

array_intersect()函数可以接受多个数组,比较它们的交集。下面是一个例子:

// 定义三个数组
$array1 = array(1, 2, 3, 4, 5);
$array2 = array(4, 5, 6, 7, 8);
$array3 = array(5, 6, 7, 8, 9);

// 获取三个数组的交集
$result = array_intersect($array1, $array2, $array3);

// 输出结果
print_r($result);

运行上述代码,你会得到以下输出:

Array
(
    [4] => 5
)

可以看到,$array1、$array2和$array3的交集中只包含了一个元素5,这是因为这是三个数组中唯一相同的值。

  1. 比较关联数组

array_intersect()函数也可以比较关联数组。下面是一个例子:

// 定义两个关联数组
$array1 = array("a" => "apple", "b" => "banana", "c" => "cherry");
$array2 = array("a" => "orange", "b" => "banana", "d" => "date");

// 获取两个关联数组的交集
$result = array_intersect_assoc($array1, $array2);

// 输出结果
print_r($result);

运行上述代码,你会得到以下输出:

Array
(
    [b] => banana
)

可以看到,$array1和$array2的交集中只包含了一个元素"banana",这是因为这是两个关联数组中唯一相同的值。

  1. 比较大小写不敏感的字符串

array_intersect()函数还可以比较大小写不敏感的字符串。下面是一个例子:

// 定义两个数组
$array1 = array("a" => "Apple", "b" => "banana", "c" => "cherry");
$array2 = array("a" => "apple", "b" => "banana", "d" => "date");

// 获取大小写不敏感的字符串交集
$result = array_intersect($array1, array_change_key_case($array2, CASE_LOWER));

// 输出结果
print_r($result);

运行上述代码,你会得到以下输出:

Array
(
    [b] => banana
)

可以看到,$array1和$array2的交集中只包含了一个元素"banana",这是因为这是两个数组中唯一大小写不敏感相同的值。

  1. 比较含有重复元素的数组

array_intersect()函数也可以比较含有重复元素的数组。下面是一个例子:

// 定义两个数组,包含重复元素
$array1 = array(1, 2, 2, 3, 4, 5);
$array2 = array(2, 2, 3, 3, 4, 5, 5, 6, 7);

// 获取两个数组的交集
$result = array_intersect($array1, $array2);

// 输出结果
print_r($result);

运行上述代码,你会得到以下输出:

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

可以看到,$array1和$array2的交集中包含了多个重复元素。

  1. 比较值为数组的数组

array_intersect()函数还可以比较值为数组的数组。下面是一个例子:

// 定义两个数组
$array1 = array("a" => array(1, 2), "b" => array(2, 3), "c" => array(4, 5));
$array2 = array("a" => array(1, 2), "b" => array(2, 4), "d" => array(4, 5));

// 获取两个数组的交集
$result = array_intersect($array1, $array2);

// 输出结果
print_r($result);

运行上述代码,你会得到以下输出:

Array
(
    [a] => Array
        (
            [0] => 1
            [1] => 2
        )

    [b] => Array
        (
            [0] => 2
            [1] => 3
        )

)

可以看到,$array1和$array2的交集中包含了两个值为数组的元素。

  1. 比较多维数组

array_intersect()函数还可以比较多维数组。下面是一个例子:

// 定义两个多维数组
$array1 = array(
    array("id" => 1, "name" => "apple", "price" => 5),
    array("id" => 2, "name" => "banana", "price" => 3),
    array("id" => 3, "name" => "cherry", "price" => 2)
);
$array2 = array(
    array("id" => 2, "name" => "banana", "price" => 3),
    array("id" => 3, "name" => "cherry", "price" => 2),
    array("id" => 4, "name" => "date", "price" => 6)
);

// 获取两个多维数组的交集
$result = array_intersect($array1, $array2);

// 输出结果
print_r($result);

运行上述代码,你会得到以下输出:

Array
(
    [1] => Array
        (
            [id] => 2
            [name] => banana
            [price] => 3
        )

    [2] => Array
        (
            [id] => 3
            [name] => cherry
            [price] => 2
        )

)

可以看到,$array1和$array2的交集中包含了两个元素,这是因为它们有相同的id、name和price。

三、总结

array_intersect()函数是一个非常强大的数组函数,可以比较两个或多个数组中的值,并返回它们的交集。除此之外,它还可以比较多个数组、关联数组、大小写不敏感的字符串、含有重复元素的数组、值为数组的数组以及多维数组。在实际编程中,我们可以根据自己的需要选择合适的用法来使用这个函数。