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

PHP中的array_unique函数:去重一个数组中的重复值

发布时间:2023-06-25 15:04:41

array_unique是PHP中的一个函数,它能够去重一个数组中的重复值。这个函数常用于处理从数据库中取出的数据,去除重复的值,使结果更加精确。本文将介绍array_unique函数的基本使用和注意事项。

1. 基本使用

array_unique函数的语法非常简单,格式如下:

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

其中,$array是要去重的数组,$sort_flags是可选的排序规则,用于指定如何对数组进行排序。

示例:

$arr = array(1, 2, 2, 3, 3, 4, 5);

$arr = array_unique($arr);

print_r($arr);

输出结果为:

Array

(

    [0] => 1

    [1] => 2

    [3] => 3

    [6] => 4

    [7] => 5

)

可以看到,array_unique函数把重复的值都去掉了,只保留了一个。

2. 注意事项

在使用array_unique函数时,需要注意以下几点:

(1)函数只能去除相邻的重复值,不能去除非相邻的重复值。例如,数组[1, 2, 3, 2, 4, 3],使用array_unique函数后会变成[1, 2, 3, 4, 3]。

(2)对于复杂的数据类型(例如对象),需要自定义一个回调函数来判断是否相等才能去重。例如,定义一个Person类:

class Person

{

    public $name;

    public $age;

    public function __construct($name, $age)

    {

        $this->name = $name;

        $this->age = $age;

    }

    public function equals($other)

    {

        return $this->name == $other->name && $this->age == $other->age;

    }

}

然后使用自定义的回调函数:

function compare($a, $b)

{

    return $a->equals($b);

}

$arr = array(new Person("Tom", 20), new Person("Jerry", 20), new Person("Tom", 25));

$arr = array_unique($arr, 'compare');

print_r($arr);

输出结果为:

Array

(

    [0] => Person Object

        (

            [name] => Tom

            [age] => 20

        )

    [1] => Person Object

        (

            [name] => Jerry

            [age] => 20

        )

    [2] => Person Object

        (

            [name] => Tom

            [age] => 25

        )

)

可以看到,使用自定义的回调函数能够正常地去重。

(3)对于关联数组,数组的键值也会被去重。例如,对于数组array("a"=>1, "b"=>2, "c"=>2),使用array_unique函数后会变成array("a"=>1, "b"=>2)。

3. 结论

array_unique函数是PHP中一个非常实用的数组处理函数,能够简单地去重一个数组中的重复值。需要注意的是,它只能去除相邻的重复值,对于复杂的数据类型需要自定义回调函数,对于关联数组键值也会被去重。在实际开发中,使用时需要注意以上问题。