1. 问题描述
在PHP中,有时候需要对数组去重,也就是只保留一个元素。比如对以下数组进行去重:
$arr = array(1, 2, 2, 3, 3, 3);
需要将其变为:
$arr = array(1, 2, 3);
2. 方法一:使用array_unique函数
2.1 函数简介
array_unique
函数用于移除数组中的重复元素。该函数返回一个新的数组,包含原数组中所有的唯一值。
2.2 函数使用
可以直接调用 array_unique
函数对需要去重的数组进行去重。
$arr = array(1, 2, 2, 3, 3, 3);
$new_arr = array_unique($arr);
print_r($new_arr);
// 输出结果:Array ( [0] => 1 [1] => 2 [3] => 3 )
如果需要保留原数组的下标,可以使用 array_unique
函数的第二个参数,将其设为 SORT_REGULAR
:
$arr = array(1, 2, 2, 3, 3, 3);
$new_arr = array_unique($arr, SORT_REGULAR);
print_r($new_arr);
// 输出结果:Array ( [0] => 1 [1] => 2 [3] => 3 )
3. 方法二:使用循环去重
3.1 循环去重原理
将数组中的每个元素与数组中该元素后面的元素比较,如果后面有重复的元素,则将该元素从数组中删除。
3.2 代码实现
具体实现代码如下:
$arr = array(1, 2, 2, 3, 3, 3);
for ($i = 0; $i < count($arr) - 1; $i++) {
for ($j = $i + 1; $j < count($arr); $j++) {
if ($arr[$i] == $arr[$j]) {
array_splice($arr, $j, 1);
$j--;
}
}
}
print_r($arr);
// 输出结果:Array ( [0] => 1 [1] => 2 [2] => 3 )
该方法在小型数组情况下效果较好,当数组较大时,会消耗大量的计算资源。
4. 总结
以上是PHP中对数组去重的两种方法,其中 array_unique
函数适用于所有情况,使用方便,对大型数组也不会产生太大的计算负担。而循环去重方法,适用于小型数组,实现逻辑较为简单。
使用 array_unique 函数可以更加方便快捷地对数组进行去重操作,在实际开发中也需要考虑数组的大小情况,选择更为适用的去重方法。