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

PHP中的array_unique()函数-如何去重一个PHP数组

发布时间:2023-06-21 21:22:54

在PHP中,一个数组是一种容器,可以存储多个值。有时候我们需要对一个数组去重,即删除其中重复的元素。PHP提供了一个内置函数array_unique()来实现这一功能。

array_unique()函数的语法为:

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

其中,$array表示要去重的数组,$sort_flags表示可选参数,用于指定排序方式。

当使用array_unique()函数时,它会返回一个只包含不重复元素的新数组。原始数组中的元素保持不变。下面是一个示例代码:

<?php
$a = array("a", "b", "b", "c", "d", "d");
print_r(array_unique($a));
?>

输出结果为:

Array
(
    [0] => a
    [1] => b
    [3] => c
    [4] => d
)

可以看到,原始数组中的重复元素已经被删除,只保留了不重复的元素。需要注意的是,返回的新数组中的键名是重新生成的。

除了上述语法以外,我们还可以使用回调函数来自定义去重方式。例如,下面的代码可以实现对二维数组去重,只保留 个元素相同的子数组:

<?php
function compare($a, $b) {
    if ($a[0] == $b[0]) {
        return 0;
    }
    return ($a[0] < $b[0]) ? -1 : 1;
}

$a = array(
    array("a", 1),
    array("b", 2),
    array("a", 3),
    array("c", 4),
    array("b", 5),
);

usort($a, "compare");
$res = array();
foreach ($a as $item) {
    if (!isset($res[$item[0]])) {
        $res[$item[0]] = $item;
    }
}

print_r(array_values($res));
?>

这里我们使用了usort()函数来对原始数组进行排序,然后再用foreach循环进行去重。输出结果为:

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

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

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

)

可以看到,只有 个元素相同的子数组被保留了下来。

综上所述,array_unique()函数是PHP中一个非常有用的函数,可以方便地实现对一个数组的去重。如果我们需要自定义去重方式,也可以借助其他函数(如usort())来实现。