PHP 中对数组去重并保持键名的最佳方法
作者:BrightSoul
时间:2025-05-19
浏览:0
PHP中对数组去重且保持键名的最佳方法有两种:array_unique():可去重但不保留键名,重新索引数组。自定义函数array_unique_preserve_keys():使用哈希值比较值,可去重并保留键名。
本文目录
PHP 中对数组去重且保持键名的最佳方法有两种:array_unique():可去重但不保留键名,重新索引数组。自定义函数 array_unique_preserve_keys():使用哈希值比较值,可去重并保留键名。

PHP 中对数组去重并保持键名的最佳方法
在 PHP 中,数组去重是指删除重复的值,同时保持键名不变。这在处理来自不同来源的可能包含重复元素的数据时非常有用,例如来自多个表单提交或数据库查询。
方法 1:array_unique()
array_unique() 函数是内置的 PHP 函数,用于对数组进行去重。它接受一个数组作为输入,并返回一个新的数组,其中重复的值已被删除。但是,array_unique() 不会保留键名,而是重新索引数组,从 0 开始。
示例:
$arr = ['a', 'b', 'c', 'c', 'd', 'e', 'a']; $result = array_unique($arr); print_r($result); // 输出:['a', 'b', 'c', 'd', 'e']
方法 2:自定义函数
为了保持键名,我们可以编写一个自定义函数来对数组进行去重。此方法使用关联数组并比较每个值的哈希值来确定是否重复。
示例:
function array_unique_preserve_keys($arr)
{
$hash = [];
$unique_arr = [];
foreach ($arr as $key => $value)
{
$hash_value = md5($value);
if (!isset($hash[$hash_value]))
{
$hash[$hash_value] = 1;
$unique_arr[$key] = $value;
}
}
return $unique_arr;
}
$arr = ['a', 'b', 'c', 'c', 'd', 'e', 'a'];
$result = array_unique_preserve_keys($arr);
print_r($result); // 输出:['a' => 'a', 'b' => 'b', 'c' => 'c', 'd' => 'd', 'e' => 'e']实战案例:
假设我们有一个来自表单提交的数组,其中包含重复的用户名和电子邮件地址。通过使用 array_unique_preserve_keys() 函数对其进行去重,我们可以移除重复记录,同时保持用户的用户名。
$form_data = [
['username' => 'john', 'email' => 'john@example.com'],
['username' => 'jane', 'email' => 'jane@example.com'],
['username' => 'john', 'email' => 'john@example.org'],
['username' => 'mark', 'email' => 'mark@example.net']
];
$unique_users = array_unique_preserve_keys($form_data);
print_r($unique_users); // 输出:['john' => ['username' => 'john', 'email' => 'john@example.com'], 'jane' => ['username' => 'jane', 'email' => 'jane@example.com'], 'mark' => ['username' => 'mark', 'email' => 'mark@example.net']]
作者最新文章
漫蛙漫画免费下拉式在线看地址
2026-10-27 17:25
如何在WPSOffice2019一键开启和关闭筛选
2026-10-26 23:11
xmind怎么调整两个框之间的距离 布局技巧
2026-10-24 13:34
ps怎么抠图
2026-10-20 17:22
PDF表格怎么转换成Excel?如何免费将PDF表格转成Excel?
2026-10-15 11:26
上一篇:
golang函数性能优化与内存管理
下一篇:
问界新M5即将发布 华为智能驾驶再掀高潮
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多

































