如何使用array_unique()函数去重一个数组
array_unique()函数是PHP内置的数组去重函数,用于去除数组中的重复元素。其使用方法如下:
1. 利用array_unique()函数去重一个一维数组。
$array = [1, 2, 3, 3, 4, 5, 5]; $uniqArray = array_unique($array); print_r($uniqArray);
输出结果:Array ( [0] => 1 [1] => 2 [2] => 3 [4] => 4 [5] => 5 )
这样就可以得到一个去重后的一维数组。
2. 利用array_unique()函数去重一个多维数组。
$array = [['a', 'b', 'c'], ['a', 'b', 'c'], ['d', 'e', 'f']];
$uniqArray = array_map('unserialize', array_unique(array_map('serialize', $array)));
print_r($uniqArray);
输出结果:Array ( [0] => Array ( [0] => a [1] => b [2] => c ) [2] => Array ( [0] => d [1] => e [2] => f ) )
这里的多维数组通过array_map('serialize', $array)将每个子数组转换成字符串,再通过array_unique()函数去重,再通过array_map('unserialize', $uniqArray)将字符串转回为子数组。
3. 自定义比较函数去重。
function compare($a, $b) {
return $a['id'] - $b['id'];
}
$array = [
['id' => 1, 'name' => 'Alice'],
['id' => 2, 'name' => 'Bob'],
['id' => 1, 'name' => 'John']
];
usort($array, 'compare');
$uniqArray = [];
$prev = null;
foreach ($array as $item) {
if ($item['id'] !== $prev) {
$uniqArray[] = $item;
}
$prev = $item['id'];
}
print_r($uniqArray);
输出结果:Array ( [0] => Array ( [id] => 1 [name] => Alice ) [1] => Array ( [id] => 2 [name] => Bob ) )
这里的自定义比较函数compare()通过比较id字段的值来判断两个元素是否相等。然后使用usort()函数对数组按照id升序排序。最后通过循环判断相邻两个元素的id是否相等,不相等则保留。
总结:
array_unique()函数能简单方便地去重一个一维数组,对于多维数组需要使用serialize()函数将子数组转换成字符串,再通过array_map()、array_unique()和array_map()函数实现去重。若要使用自定义的比较函数去重数组,可以使用排序函数如usort()和自己编写的循环方式。这些方法能满足不同场景下的去重需求。
