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())来实现。
