PHP数组去重有五种方法:一、array_unique()保留键名,可配array_values()重排索引;二、array_keys(array_flip())丢键名且转字符串键;三、手动遍历+in_array()支持自定义逻辑;四、array_reduce()函数式实现;五、serialize+严格比较的自定义函数处理类型敏感场景。

如果您需要从PHP数组中移除重复的元素,确保每个值仅保留一次,则可能面临索引重排、键名保留或类型敏感性等不同需求。以下是实现PHP数组去重的多种方法:
一、使用array_unique()函数
该函数是PHP内置的标准去重方式,可处理索引数组和关联数组,默认依据值进行比较,并保留原始键名(对索引数组会重新编号)。它支持可选的排序标志以控制比较行为。
1、定义一个包含重复值的数组,例如:$arr = [1, 2, 2, 3, '3', 4, 4];
2、调用array_unique()并传入数组:$result = array_unique($arr);
立即学习“PHP免费学习笔记(深入)”;
3、若需保持索引连续,可附加array_values():$result = array_values(array_unique($arr));
二、使用array_keys()与array_flip()组合
该方法利用键名唯一性原理:先将数组值翻转为键,再翻转回值,从而自然剔除重复项。适用于仅需去重且不关心原始键名的场景,但会丢失原始键名并强制转换为字符串键(数值键也可能被转为字符串)。
1、声明原始数组:$arr = ['a', 'b', 'a', 'c'];
2、执行两次翻转:$result = array_keys(array_flip($arr));
3、如需恢复数字索引,可包裹array_values():$result = array_values(array_keys(array_flip($arr)));
三、手动遍历+in_array()判断
此方式提供完全可控的逻辑流程,支持自定义比较条件(如忽略大小写、类型强制一致等),适合对去重规则有特殊要求的场景,但性能低于内置函数,尤其在大数据量时。
1、初始化空结果数组:$result = [];
2、使用foreach遍历原数组:foreach ($arr as $value) {
3、检查当前值是否已存在于$result中:if (!in_array($value, $result, true)) {
4、若不存在,则追加进$result:$result[] = $value;
还木有评论哦,快来抢沙发吧~