上一篇
📢 最新动态
2025年8月,PHP 8.4正式发布,新版本对数组处理函数进行了微优化,array_unique()
函数在处理大型多维数组时性能提升约15%!对于数据清洗场景来说,这无疑是个好消息。
在实际开发中,我们经常会遇到这样的场景:
这时候,去除数组中的重复值就成了数据清洗的关键步骤!💪
array_unique()
— 最简单的去重$fruits = ["苹果", "香蕉", "苹果", "橙子"]; $uniqueFruits = array_unique($fruits); print_r($uniqueFruits); // 输出:Array ( [0] => 苹果 [1] => 香蕉 [3] => 橙子 )
⚠️ 注意:
SORT_STRING
比较方式(区分大小写) 如果不想让数组索引变得混乱:
$uniqueFruits = array_values(array_unique($fruits));
$users = [ ["id" => 1, "name" => "张三"], ["id" => 2, "name" => "李四"], ["id" => 1, "name" => "张三"] // 重复项 ]; $serialized = array_map('serialize', $users); $unique = array_unique($serialized); $result = array_map('unserialize', $unique);
当需要根据特定字段去重时:
$uniqueUsers = []; $usedIds = []; foreach ($users as $user) { if (!in_array($user['id'], $usedIds)) { $uniqueUsers[] = $user; $usedIds[] = $user['id']; } }
// 使用哈希表加速查找 $unique = []; $exists = []; foreach ($array as $item) { $key = md5(serialize($item)); // 生成唯一键 if (!isset($exists[$key])) { $unique[] = $item; $exists[$key] = true; } }
$seen = []; $array = array_filter($array, function ($item) use (&$seen) { $key = is_object($item) ? spl_object_hash($item) : $item; return !in_array($key, $seen, true) && array_push($seen, $key); });
$objects = [new User(), new User()]; // 两个不同实例 $uniqueObjects = array_unique($objects, SORT_REGULAR);
$reversed = array_reverse($array); $unique = array_reverse(array_unique($reversed));
array_unique()
+ array_values
组合 💡 专家提示:PHP 8.4新增的array_unique
的第三个参数支持自定义比较函数,在处理特殊对象时更灵活!
❓ Q:去重后如何保持原始顺序?
👉 所有展示的方法默认都保持首次出现的顺序
❓ Q:是否区分大小写?
👉 默认区分,可通过array_map('strtolower', $array)
预处理
掌握这些技巧,你就能轻松应对各种PHP数组去重需求啦!🚀 记得根据实际场景选择最适合的方案哦~
本文由 西门冠宇 于2025-08-01发表在【云服务器提供商】,文中图片由(西门冠宇)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/507120.html
发表评论