PHP过滤重复数组最常用array_unique(),适用于一维数组并保留首次出现元素及原始键名;多维数组需用serialize/array_map或手动遍历实现去重,按字段去重则需结合临时数组判断。

PHP过滤重复数组最常用的方法是用 array_unique(),它能直接去掉一维数组中的重复值,保留首次出现的元素。
array_unique() 默认保留原始键名(不是数字索引),适合关联数组或需要维持键值对应关系的场景:
$arr = ['a', 'b', 'a', 'c', 'b']; $result = array_unique($arr); // 结果:['a'=> 'a', 'b'=> 'b', 'c'=> 'c']
注意:返回的是新数组,原数组不变;重复值被完全移除,只留第一个出现的。
PHP 原生 array_unique() 不支持多维数组,会报错或返回空。常见解决方式:
立即学习“PHP免费学习笔记(深入)”;
简单示例(按整行去重):
本文档主要讲述的是j2me3D游戏开发简单教程; 如今,3D图形几乎是任何一部游戏的关键部分,甚至一些应用程序也通过用3D形式来描述信息而获得了成功。如前文中所述,以立即模式和手工编码建立所有的3D对象的方式进行开发速度很慢且很复杂。应用程序中多边形的所有角点必须在数组中独立编码。在JSR 184中,这称为立即模式。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
0
$arr2d = [['id'=>1, 'name'=>'Tom'], ['id'=>2, 'name'=>'Jack'], ['id'=>1, 'name'=>'Tom']];
$unique = array_map('unserialize', array_unique(array_map('serialize', $arr2d)));如果希望得到连续的数字键(如 0,1,2…),用 array_values() 重新索引:
$arr = ['a', 'b', 'a', 'c']; $clean = array_values(array_unique($arr)); // 结果:[0=>'a', 1=>'b', 2=>'c']
更实用的场景:保留每个 id 第一次出现的完整记录:
代码片段:
$data = [['id'=>1, 'val'=>'x'], ['id'=>2, 'val'=>'y'], ['id'=>1, 'val'=>'z']];
$seen = [];
$result = [];
foreach ($data as $item) {
if (!in_array($item['id'], $seen)) {
$result[] = $item;
$seen[] = $item['id'];
}
}基本上就这些。一维用 array_unique(),多维或按字段去重就得自己控制逻辑,不复杂但容易忽略键名和数据结构的影响。
以上就是php如何过滤重复的数组?的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号