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 相关文章推荐
PHP开发中常用的字符串操作函数
Feb 08 PHP
PHP+MySQL投票系统的设计和实现分享
Sep 23 PHP
浅析php中抽象类和接口的概念以及区别
Jun 27 PHP
php中require和require_once的区别说明
Feb 27 PHP
PHP IDE PHPStorm配置支持友好Laravel代码提示方法
May 12 PHP
PHP之正则表达式捕获组与非捕获组(详解)
Jul 29 PHP
PHP实现导出带样式的Excel
Aug 28 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
Nov 16 PHP
php正确输出json数据的实例讲解
Aug 21 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
Oct 03 PHP
PHP实现本地图片转base64格式并上传
May 29 PHP
PHP实现简单注册登录系统
Dec 28 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
磨咖啡豆的密诀
2021/03/03 冲泡冲煮
PHP中最容易忘记的一些知识点总结
2013/04/28 PHP
PHP APC的安装与使用详解
2013/06/13 PHP
Thinkphp实现自动验证和自动完成
2015/12/19 PHP
YII Framework教程之异常处理详解
2016/03/14 PHP
PHP生成制作验证码的简单实例
2016/06/12 PHP
PHP array_key_exists检查键名或索引是否存在于数组中的实现方法
2016/06/13 PHP
php中的登陆login实例代码
2016/06/20 PHP
PHP7扩展开发之hello word实现方法详解
2018/01/15 PHP
PHP实现递归的三种方法
2020/07/04 PHP
一些相见恨晚的 JavaScript 技巧
2010/04/25 Javascript
jquery获取tr并更改tr内容示例代码
2014/02/13 Javascript
JQuery fileupload插件实现文件上传功能
2016/03/18 Javascript
关于vue.js弹窗组件的知识点总结
2016/09/11 Javascript
JavaScript的变量声明提升问题浅析(Hoisting)
2016/11/30 Javascript
vue构建单页面应用实战
2017/04/10 Javascript
Angular中ng-repeat与ul li的多层嵌套重复问题
2017/07/24 Javascript
详解项目升级到vue-cli3的正确姿势
2019/01/28 Javascript
Node.js创建一个Express服务的方法详解
2020/01/06 Javascript
Python读写txt文本文件的操作方法全解析
2016/06/26 Python
python脚本开机自启的实现方法
2019/06/28 Python
在spyder IPython console中,运行代码加入参数的实例
2020/04/20 Python
Python map及filter函数使用方法解析
2020/08/06 Python
Python制作一个仿QQ办公版的图形登录界面
2020/09/22 Python
虚拟环境及venv和virtualenv的区别说明
2021/02/05 Python
input file上传文件样式支持html5的浏览器解决方案
2012/11/14 HTML / CSS
世界上最大的网络主机公司:1&1
2016/10/12 全球购物
理工科学生的自我评价
2013/12/15 职场文书
房地产开发计划书
2014/01/10 职场文书
小区门卫管理制度
2014/01/29 职场文书
新任教师自我鉴定
2014/02/24 职场文书
读群众路线的心得体会
2014/09/03 职场文书
民主生活会对照检查材料
2014/09/22 职场文书
2014乡镇党委副书记对照检查材料思想汇报
2014/10/09 职场文书
2014年中班下学期工作总结
2014/12/11 职场文书
办公室管理规章制度
2015/08/04 职场文书