插件窝 干货文章 PHP中如何排除重复数组

PHP中如何排除重复数组

array uniqueArray 数组 函数 328    来源:    2025-03-18

在PHP中,你可以使用多种方法来排除数组中的重复元素。以下是几种常见的方法:

1. 使用 array_unique 函数

array_unique 函数可以移除数组中的重复值,并返回一个新的数组。

$array = [1, 2, 2, 3, 4, 4, 5];
$uniqueArray = array_unique($array);
print_r($uniqueArray);

输出:

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

2. 使用 array_fliparray_keys 函数

array_flip 函数可以将数组的键和值交换,由于数组的键是唯一的,因此可以间接去除重复值。

$array = [1, 2, 2, 3, 4, 4, 5];
$uniqueArray = array_keys(array_flip($array));
print_r($uniqueArray);

输出:

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

3. 使用 array_reduce 函数

array_reduce 函数可以遍历数组并累积结果,可以用来手动去重。

$array = [1, 2, 2, 3, 4, 4, 5];
$uniqueArray = array_reduce($array, function($carry, $item) {
    if (!in_array($item, $carry)) {
        $carry[] = $item;
    }
    return $carry;
}, []);
print_r($uniqueArray);

输出:

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

4. 使用 array_filterin_array 函数

array_filter 函数可以结合 in_array 来手动过滤重复值。

$array = [1, 2, 2, 3, 4, 4, 5];
$uniqueArray = [];
array_filter($array, function($item) use (&$uniqueArray) {
    if (!in_array($item, $uniqueArray)) {
        $uniqueArray[] = $item;
    }
});
print_r($uniqueArray);

输出:

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

5. 使用 array_values 重新索引数组

在使用 array_unique 后,数组的键可能会变得不连续。你可以使用 array_values 来重新索引数组。

$array = [1, 2, 2, 3, 4, 4, 5];
$uniqueArray = array_values(array_unique($array));
print_r($uniqueArray);

输出:

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

总结

  • array_unique 是最简单直接的方法。
  • array_fliparray_keys 的组合在某些情况下可能更快。
  • array_reducearray_filter 提供了更灵活的手动去重方式。
  • array_values 可以用于重新索引数组。

根据你的具体需求选择合适的方法。