一、开场白:数组去重,你以为很简单?
嘿,PHP 程序员们!今天咱们来聊一个看似基础,但暗藏玄机的话题——数组去重。
你是不是一听到“数组去重”,脑子里马上跳出 array_unique ?没问题,这确实是官方给的“标准答案”。但如果你在面试或者实际开发中,只会这一招,那可能就要被扣上“基础不牢”的帽子了。
想象一下这个场景:你有一个用户 ID 数组,里面混进了一些重复的“卧底”。你的任务就是干净利落地清理它们,同时还得考虑性能、保持键名、甚至是处理复杂的二维数组。这时候,只靠 array_unique 可能就要抓瞎了。
别慌!今天我就带你深入 PHP 数组去重的江湖,从“新手村”的 array_unique,一路升级打怪,直到掌握那些让代码既高效又风骚的“隐藏技巧”。我保证,每一个方法都会配上完整可运行、可复制的代码示例,让你看完就能直接 copy 到项目里用!
二、 基础入门:官方的“万金油” array_unique
咱们还是得从老祖宗 array_unique 说起。这个函数是 PHP 内置的,用法最简单,接受一个数组,返回一个移除了重复值的新数组。
语法看一眼:
array_unique(array $array, int $flags = SORT_STRING): array
那个 $flags 参数是用来指定比较规则的,平时用得不多,先知道有这回事就行。
直接上菜,看例子:
<?php
// 示例1:基础数字数组去重
$numbers = [1, 2, 2, 3, 4, 4, 5];
$uniqueNumbers = array_unique($numbers);
print_r($uniqueNumbers);
// 输出:Array ( [0] => 1 [1] => 2 [3] => 3 [4] => 4 [6] => 5 )
// 示例2:字符串数组去重(不区分大小写?)
$fruits = ["Apple", "apple", "Banana", "banana", "Orange"];
$uniqueFruits = array_unique($fruits);
print_r($uniqueFruits);
// 输出:Array ( [0] => Apple [1] => apple [2] => Banana [3] => banana [4] => Orange )
// 注意:默认区分大小写哦!
?>
看到了吗? 第一个例子完美去重,但键名变了!原数组的键 [2] 和 [5] 直接消失了。第二个例子更明显,它严格区分大小写,所以“Apple”和“apple”被认为是两个不同的值。
array_unique 的优缺点总结(敲黑板!):
- 优点:简单!方便!官方内置,不用自己造轮子。
- 缺点:
-
- 不保留原键名顺序(数字键名会重排,关联键名会保留第一个出现的键)。
- 默认区分大小写,需要不区分时得先处理数据。
- 对大数组的效率,并不是最优的(底层用了排序算法)。

最低0.47元/天 解锁文章
578

被折叠的 条评论
为什么被折叠?



