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

PHP函数array_unique:如何使用它以去除数组中的重复值?

发布时间:2023-06-24 18:26:54

在 PHP 中,数组是一种非常重要的数据类型。很多时候,我们需要对数组进行操作,例如添加、删除或去重。在这个过程中,我们可能需要使用一些 PHP 内置函数,例如 array_unique()

array_unique() 函数是 PHP 提供的一个非常常用的函数,可用于去除数组中的重复值。这个函数的作用是将数组中所有重复的值只保留一个,保留的是 次出现的那个值,其他的都会被删除。下面是 array_unique() 函数的基本语法:

array_unique(array $array [, int $sort_flags = SORT_STRING])

完整的函数语法包括两个参数:

- $array:必选参数,表示要去重的数组。

- $sort_flags:可选参数,表示如何排序去重后的数组。默认是 SORT_STRING,即将元素视为字符串进行排序。

下面是一个简单的示例,展示了如何使用 array_unique() 函数:

// 定义一个包含重复值的数组
$array = array('apple', 'banana', 'orange', 'banana', 'kiwi');

// 使用 array_unique() 函数去重
$unique_array = array_unique($array);

// 输出去重后的数组
print_r($unique_array);

上面的示例代码的输出结果如下:

Array
(
    [0] => apple
    [1] => banana
    [2] => orange
    [4] => kiwi
)

从输出结果可以看出,array_unique() 函数成功地去掉了 $array 数组中的重复值,并将去重后的结果保存在 $unique_array 数组中。

接下来,让我们详细地了解一下 array_unique() 函数的使用方法和注意事项。

## 使用方法

### 去除基本数组中的重复值

要使用 array_unique() 函数去除数组中的重复值,只需要将包含重复值的数组作为该函数的 个参数传递即可。

例如,以下代码演示了如何去除 $array 数组中的重复值:

$array = array('apple', 'orange', 'banana', 'kiwi', 'banana');
$unique_array = array_unique($array);
print_r($unique_array);

运行上面的代码,输出结果如下:

Array
(
    [0] => apple
    [1] => orange
    [2] => banana
    [3] => kiwi
)

从输出结果可以看出,array_unique() 函数去掉了 $array 数组中的重复值,并将去重后的结果保存在 $unique_array 数组中。

### 去除多维数组中的重复值

在 PHP 中,我们还可以使用 array_unique() 函数去除多维数组中的重复值。在多维数组中,我们需要注意:

- array_unique() 函数只能去除一维数组中的重复值;

- 如果数组中包含多个一样的一维数组,则这些一维数组仍然不会被去重。

例如,以下代码演示了如何去除 $array 多维数组中的重复值:

$array = array(
    array('id' => 1, 'name' => 'apple'),
    array('id' => 2, 'name' => 'orange'),
    array('id' => 3, 'name' => 'banana'),
    array('id' => 1, 'name' => 'apple'),
);

$unique_array = array_map("unserialize", array_unique(array_map("serialize", $array)));
print_r($unique_array);

运行上面的代码,输出结果如下:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => apple
        )

    [1] => Array
        (
            [id] => 2
            [name] => orange
        )

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

)

从输出结果可以看出,array_unique() 函数成功地去掉了 $array 数组中的重复值,并将去重后的结果保存在 $unique_array 数组中。

## 注意事项

虽然 array_unique() 函数的使用方法非常简单,但在使用该函数时,我们还需要注意一些事项。

### 对于非字符串类型的值,需要显式转换

当我们对非字符串类型的数组进行去重时,需要显式地将其转换成字符串类型,否则 array_unique() 函数会将其视为不同的数组。通常,我们可以使用 (string) 运算符或 strval() 函数将整数、浮点数等非字符串类型转换成字符串类型。例如,以下代码演示了如何去除包含整数类型的数组中的重复值:

$array = array(1, 2, 3, 3, 4);
$unique_array = array_unique(array_map('strval', $array));
print_r($unique_array);

运行上面的代码,输出结果如下:

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

从输出结果可以看出,array_unique() 函数成功地去掉了 $array 数组中的重复值,并将去重后的结果保存在 $unique_array 数组中。

### 在多维数组中使用时需要注意

当我们对多维数组进行去重时,需要先将数组转换成一维数组,再使用 array_unique() 函数进行去重。通常,我们可以使用 serialize() 函数将数组转换成字符串类型,再使用 unserialize() 函数将其转换成数组类型。例如,以下代码演示了如何去除 $array 多维数组中的重复值:

$array = array(
    array('id' => 1, 'name' => 'apple'),
    array('id' => 2, 'name' => 'orange'),
    array('id' => 3, 'name' => 'banana'),
    array('id' => 1, 'name' => 'apple'),
);

$unique_array = array_map("unserialize", array_unique(array_map("serialize", $array)));
print_r($unique_array);

运行上面的代码,输出结果如下:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => apple
        )

    [1] => Array
        (
            [id] => 2
            [name] => orange
        )

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

)

从输出结果可以看出,array_unique() 函数成功地去掉了 $array 数组中的重复值,并将去重后的结果保存在 $unique_array 数组中。