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 相关文章推荐
模仿OSO的论坛(四)
Oct 09 PHP
discuz authcode 经典php加密解密函数解析
Jul 12 PHP
迅速确定php多维数组的深度的方法
Jan 07 PHP
php像数组一样存取和修改字符串字符
Mar 21 PHP
php短址转换实现方法
Feb 25 PHP
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
Nov 30 PHP
ThinkPHP使用Smarty第三方插件方法小结
Mar 19 PHP
PHP中new static()与new self()的比较
Aug 19 PHP
php中的抽象方法和抽象类
Feb 14 PHP
PHP基于openssl实现的非对称加密操作示例
Jan 11 PHP
PHP chr()函数讲解
Feb 11 PHP
ThinkPHP 5.x远程命令执行漏洞复现
Sep 23 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
关于IIS php调用com组件的权限问题
2012/01/11 PHP
PHP常用技巧总结(附函数代码)
2012/02/04 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
2019/03/06 PHP
php封装的page分页类完整实例代码
2020/02/01 PHP
PHP rsa加密解密算法原理解析
2020/12/09 PHP
BOOM vs RR BO5 第一场 2.14
2021/03/10 DOTA
疯掉了,尽然有js写的操作系统
2007/04/23 Javascript
测试JavaScript字符串处理性能的代码
2009/12/07 Javascript
Javascript实现单张图片浏览
2014/12/18 Javascript
使用JavaScript链式编程实现模拟Jquery函数
2014/12/21 Javascript
jQuery制作效果超棒的手风琴折叠菜单
2015/04/03 Javascript
简介JavaScript中toTimeString()方法的使用
2015/06/12 Javascript
轮播的简单实现方法
2016/07/28 Javascript
Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
2018/03/13 Javascript
angular2 组件之间通过service互相传递的实例
2018/09/30 Javascript
详谈python3 numpy-loadtxt的编码问题
2018/04/29 Python
python 将字符串完成特定的向右移动方法
2019/06/11 Python
python实现动态数组的示例代码
2019/07/15 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
Django使用django-simple-captcha做验证码的实现示例
2021/01/07 Python
python爬取微博评论的实例讲解
2021/01/15 Python
python实现简单文件读写函数
2021/02/25 Python
html5通过postMessage进行跨域通信的方法
2017/12/04 HTML / CSS
华为俄罗斯官方网上商城:购买Huawei手机和平板
2017/04/21 全球购物
美国轮胎网站:Priority Tire
2018/11/28 全球购物
科颜氏法国官网:Kiehl’s法国
2019/08/20 全球购物
简述使用ftp进行文件传输时的两种登录方式?它们的区别是什么?常用的ftp文件传输命令是什么?
2016/11/20 面试题
文秘求职信范文
2014/04/10 职场文书
植树节活动总结
2014/04/30 职场文书
旅游专业毕业生自荐书
2014/06/30 职场文书
入党政审材料范文
2014/12/24 职场文书
2016年春节慰问信息大全
2015/11/30 职场文书
创业计划之特色精品店
2019/08/12 职场文书
Python爬虫基础之爬虫的分类知识总结
2021/05/13 Python
Python实现socket库网络通信套接字
2021/06/04 Python
Netty分布式客户端接入流程初始化源码分析
2022/03/25 Java/Android