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