PHP二维数组去重算法


Posted in PHP onDecember 17, 2016

需求

现在有下面一组二维数组:

array(8) {
 [0]=>
 array(2) {
  ["name"]=>
  string(4) "name"
  ["value"]=>
  string(6) "青叶"
 }
 [1]=>
 array(2) {
  ["name"]=>
  string(5) "phone"
  ["value"]=>
  string(11) "13812341234"
 }
 [2]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_507[]"
  ["value"]=>
  string(12) "我是青叶"
 }
 [3]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_508[]"
  ["value"]=>
  string(6) "合肥"
 }
 [4]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_509[]"
  ["value"]=>
  string(3) "男"
 }
 [5]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_510[]"
  ["value"]=>
  string(6) "足球"
 }
 [6]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_510[]"
  ["value"]=>
  string(6) "棒球"
 }
 [7]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_511[]"
  ["value"]=>
  string(16) "2016-12-15T11:15"
 }
}

需要将处于第二维键名为name,其值相同的数组的value合并,形成一个新的数组。

比如上面代码中的name为fileds_510的两个二维数组,就应该合并为一个值为足球,棒球的数组。

思路

提到数组,再PHP中我们首先想到了循环,那么这里显然比较适合使用for循环处理,与冒泡排序相似,一个个比较,最好处理。

代码

代码如下:

$public_info = 数组;
for ($i=0;$i<count($public_info);$i++) {
  for ($j=$i+1;$j<count($public_info);$j++) {
    if ($public_info[$j]['name'] == $public_info[$i]['name']) {
      $public_info[$i]['value'] .= ',' . $public_info[$j]['value'];
      unset($public_info[$j]);
    }
  }
}

执行结果:

array(7) {
 [0]=>
 array(2) {
  ["name"]=>
  string(4) "name"
  ["value"]=>
  string(6) "青叶"
 }
 [1]=>
 array(2) {
  ["name"]=>
  string(5) "phone"
  ["value"]=>
  string(11) "13812341234"
 }
 [2]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_507[]"
  ["value"]=>
  string(12) "我是青叶"
 }
 [3]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_508[]"
  ["value"]=>
  string(6) "合肥"
 }
 [4]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_509[]"
  ["value"]=>
  string(3) "男"
 }
 [5]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_510[]"
  ["value"]=>
  string(13) "足球,棒球"
 }
 [7]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_511[]"
  ["value"]=>
  string(16) "2016-12-15T11:15"
 }
}

总结

需求已搞定,只要遇到数组,我们第一个想到的除了现成的PHP方法之外,就是循环,不管是foreach还是for,上面例子是我项目处理的一个自定义表单编辑的小段过程,希望对大家思路有帮助。

PHP 相关文章推荐
第十四节--命名空间
Nov 16 PHP
snoopy PHP版的网络客户端提供本地下载
Apr 15 PHP
解析wamp5下虚拟机配置文档
Jun 27 PHP
提高PHP编程效率的方法
Nov 07 PHP
PHP批量上传图片的具体实现方法介绍.
Feb 26 PHP
PHP使用mysql_fetch_object从查询结果中获取对象集的方法
Mar 18 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
Dec 21 PHP
WordPress过滤垃圾评论的几种主要方法小结
Jul 11 PHP
php单元测试phpunit入门实例教程
Nov 17 PHP
php递归函数怎么用才有效
Feb 24 PHP
PHP实现文件上传操作和封装
Mar 04 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
Apr 04 PHP
php格式化时间戳
Dec 17 #PHP
PHP生成唯一ID之SnowFlake算法
Dec 17 #PHP
简单解决微信文章图片防盗链问题
Dec 17 #PHP
PHP 7.1新特性的汇总介绍
Dec 16 #PHP
浅谈PHP命令执行php文件需要注意的问题
Dec 16 #PHP
PHP+Ajax 检测网络是否正常实例详解
Dec 16 #PHP
php微信公众号开发(4)php实现自定义关键字回复
Dec 15 #PHP
You might like
PHP 手机归属地查询 api
2010/02/08 PHP
PHP 最大运行时间 max_execution_time修改方法
2010/03/08 PHP
php 解决旧系统 查出所有数据分页的类
2012/08/27 PHP
yii框架无限极分类的实现方法
2017/04/08 PHP
浅析PHP 中move_uploaded_file 上传中文文件名失败
2019/04/17 PHP
PHP7修改的函数
2021/03/09 PHP
仿服务器端脚本方式的JS模板实现方法
2007/04/27 Javascript
jQuery制作仿腾讯web qq用户体验桌面
2013/08/20 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
2014/02/21 Javascript
JS区分浏览器页面是刷新还是关闭
2016/04/17 Javascript
深入理解setTimeout函数和setInterval函数
2016/05/20 Javascript
深入理解JavaScript内置函数
2016/06/03 Javascript
使用nodejs中httpProxy代理时候出现404异常的解决方法
2016/08/15 NodeJs
jQuery实现的表格展开伸缩效果实例
2016/09/07 Javascript
深入理解JavaScript继承的多种方式和优缺点
2017/05/12 Javascript
Bootstrap 中data-[*] 属性的整理
2018/03/13 Javascript
Angular学习笔记之集成三方UI框架、控件的示例
2018/03/23 Javascript
JS利用prototype给类添加方法操作详解
2019/06/21 Javascript
vue.js实现只能输入数字的输入框
2019/10/19 Javascript
vuex(vue状态管理)的特殊应用案例分享
2020/03/03 Javascript
vuex的使用和简易实现
2021/01/07 Vue.js
Python实现简单的可逆加密程序实例
2015/03/05 Python
Python赋值语句后逗号的作用分析
2015/06/08 Python
python实现下载文件的三种方法
2017/02/09 Python
Python3安装Scrapy的方法步骤
2017/11/23 Python
python的set处理二维数组转一维数组的方法示例
2019/05/31 Python
PyQt5 界面显示无响应的实现
2020/03/26 Python
STAY JAPAN台湾:预订日本民宿
2018/07/22 全球购物
简述synchronized和java.util.concurrent.locks.Lock的异同
2014/12/08 面试题
资深生产主管自我评价
2013/09/22 职场文书
单位门卫岗位职责
2013/12/20 职场文书
2014年公司植树节活动方案
2014/03/04 职场文书
民事诉讼代理授权委托书范本
2014/10/08 职场文书
英文慰问信
2015/02/14 职场文书
硕士学位申请报告
2015/05/15 职场文书
学校运动会感想
2015/08/10 职场文书