PHP二维数组的去重问题解析


Posted in PHP onJuly 17, 2011

之前写了一篇关于数组去重的文章,但是仅限于一维数组。下面的函数可以用于二维数组:

//二维数组去掉重复值 
function array_unique_fb($array2D) 
{ 
foreach ($array2D as $v) 
{ 
$v = join(",",$v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串 
$temp[] = $v; 
} 
$temp = array_unique($temp); //去掉重复的字符串,也就是重复的一维数组 
foreach ($temp as $k => $v) 
{ 
$temp[$k] = explode(",",$v); //再将拆开的数组重新组装 
} 
return $temp; 
}

如果你想保留数组的键值,可以用下面的函数:
//二维数组去掉重复值 并保留键值 
function array_unique_fb($array2D) 
{ 
foreach ($array2D as $k=>$v) 
{ 
$v = join(",",$v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串 
$temp[$k] = $v; 
} 
$temp = array_unique($temp); //去掉重复的字符串,也就是重复的一维数组 
foreach ($temp as $k => $v) 
{ 
$array=explode(",",$v); //再将拆开的数组重新组装 
$temp2[$k]["id"] =$array[0]; 
$temp2[$k]["litpic"] =$array[1]; 
$temp2[$k]["title"] =$array[2]; 
$temp2[$k]["address"] =$array[3]; 
$temp2[$k]["starttime"] =$array[4]; 
$temp2[$k]["endtime"] =$array[5]; 
$temp2[$k]["classid"] =$array[6]; 
$temp2[$k]["ename"] =$array[7]; 
} 
return $temp2; 
}

大概就这样啦。
二维数组去重
<?php 
$arr = array( 
array('id' => 1,'name' => 'aaa'), 
array('id' => 2,'name' => 'bbb'), 
array('id' => 3,'name' => 'ccc'), 
array('id' => 4,'name' => 'ddd'), 
array('id' => 5,'name' => 'ccc'), 
array('id' => 6,'name' => 'aaa'), 
array('id' => 7,'name' => 'bbb'), 
); 
function assoc_unique(&$arr, $key) 
{ 
$rAr=array(); 
for($i=0;$i<count($arr);$i++) 
{ 
if(!isset($rAr[$arr[$i][$key]])) 
{ 
$rAr[$arr[$i][$key]]=$arr[$i]; 
} 
} 
$arr=array_values($rAr); 
} 
assoc_unique(&$arr,'name'); 
print_r($arr); 
?>
PHP 相关文章推荐
PHP 学习路线与时间表
Feb 21 PHP
JS与PHP向函数传递可变参数的区别实例代码
May 18 PHP
浅析PHP页面局部刷新功能的实现小结
Jun 21 PHP
如何取得中文字符串中出现次数最多的子串
Aug 08 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
Oct 30 PHP
php实现递归的三种基本方式
Jul 04 PHP
php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法
Oct 12 PHP
thinkPHP自定义类实现方法详解
Nov 30 PHP
mac系统下安装多个php并自由切换的方法详解
Apr 21 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
Jul 04 PHP
PHP小程序支付功能完整版【基于thinkPHP】
Mar 26 PHP
laravel 实现根据字段不同值做不同查询
Oct 23 PHP
简单的PHP多图上传小程序代码
Jul 17 #PHP
一个PHP验证码类代码分享(已封装成类)
Jul 17 #PHP
PHP 验证码的实现代码
Jul 17 #PHP
PHP中用hash实现的数组
Jul 17 #PHP
PHP中文分词的简单实现代码分享
Jul 17 #PHP
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
Jul 17 #PHP
从手册去理解分析PHP session机制
Jul 17 #PHP
You might like
PHPMailer发送HTML内容、带附件的邮件实例
2014/07/01 PHP
CI框架简单邮件发送类实例
2016/05/18 PHP
php实现图片上传时添加文字和图片水印技巧
2020/04/18 PHP
php实现将二维关联数组转换成字符串的方法详解
2017/07/31 PHP
PHP实现微信申请退款功能
2018/10/01 PHP
struts2 jquery 打造无限层次的树
2009/10/23 Javascript
node.js使用require()函数加载模块
2014/11/26 Javascript
对比分析json及XML
2014/11/28 Javascript
JS实现判断滚动条滚到页面底部并执行事件的方法
2014/12/18 Javascript
提升jQuery的性能需要做好七件事
2016/01/11 Javascript
Node.js中路径处理模块path详解
2016/11/14 Javascript
Vue DevTools调试工具的使用
2017/12/05 Javascript
JS抛物线动画实例制作
2018/02/24 Javascript
在vscode里使用.vue代码模板的方法
2018/04/28 Javascript
js replace替换字符串同时替换多个方法
2018/11/27 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
2019/01/15 Javascript
基于Vue实现电商SKU组合算法问题
2019/05/29 Javascript
快速解决layui弹窗按enter键不停弹窗的问题
2019/09/18 Javascript
解决Layui当中的导航条动态添加后渲染失败的问题
2019/09/25 Javascript
jQuery实现简单弹幕效果
2019/11/28 jQuery
vue中的计算属性和侦听属性
2020/11/06 Javascript
JavaScript实现alert弹框效果
2020/11/19 Javascript
[01:52]2014DOTA2西雅图邀请赛 V社开大会你不知道的小秘密
2014/07/08 DOTA
python中查找excel某一列的重复数据 剔除之后打印
2013/02/10 Python
Python的Django框架中使用SQLAlchemy操作数据库的教程
2016/06/02 Python
使用python生成目录树
2018/03/29 Python
浅谈DataFrame和SparkSql取值误区
2018/06/09 Python
基于wxPython的GUI实现输入对话框(2)
2019/02/27 Python
python装饰器练习题及答案
2019/11/01 Python
python获取依赖包和安装依赖包教程
2020/02/13 Python
详解如何用canvas画一个微笑的表情
2019/03/14 HTML / CSS
三年级科学教学反思
2014/01/29 职场文书
《放飞蜻蜓》教学反思
2014/04/27 职场文书
社区助残日活动总结
2014/08/29 职场文书
2015年万圣节活动总结
2015/03/24 职场文书
Javascript设计模式之原型模式详细
2021/10/05 Javascript