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获取当前网址url并替换参数或网址的方法
Jun 06 PHP
PHP中数组的三种排序方法分享
May 07 PHP
初步介绍PHP扩展开发经验分享
Sep 06 PHP
解决cPanel无法安装php5.2.17
Jun 22 PHP
解析PHP强制转换类型及远程管理插件的安全隐患
Jun 30 PHP
PHP冒泡算法详解(递归实现)
Nov 10 PHP
PHP中使用BigMap实例
Mar 30 PHP
PHP中异常处理的一些方法整理
Jul 03 PHP
总结PHP中DateTime的常用方法
Aug 11 PHP
php递归函数怎么用才有效
Feb 24 PHP
laravel框架语言包拓展实现方法分析
Nov 22 PHP
phpStudy vscode 搭建debug调试的教程详解
Jul 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
php切割页面div内容的实现代码分享
2012/07/31 PHP
探讨:parse url解析URL,返回其组成部分
2013/06/14 PHP
PHP基于session.upload_progress 实现文件上传进度显示功能详解
2019/08/09 PHP
Laravel 框架路由原理与路由访问实例分析
2020/04/14 PHP
Laravel框架集合用法实例浅析
2020/05/14 PHP
window.onload 加载完毕的问题及解决方案(上)
2009/07/09 Javascript
JS弹出对话框返回值代码(asp.net后台)
2010/12/28 Javascript
ASP.NET jQuery 实例18 通过使用jQuery validation插件校验DropDownList
2012/02/03 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
2012/03/15 Javascript
JQuery对class属性的操作实现按钮开关效果
2013/10/11 Javascript
js图片滚动效果时间可随意设定当鼠标移上去时停止
2014/06/26 Javascript
js实现网页标题栏闪烁提示效果实例分析
2014/11/20 Javascript
jquery select2的使用心得(推荐)
2016/12/04 Javascript
在DWR中实现直接获取一个JAVA类的返回值的两种方法
2016/12/25 Javascript
javascript实现文字无缝滚动效果
2017/08/26 Javascript
vue.js前后端数据交互之提交数据操作详解
2018/04/24 Javascript
Ant Design moment对象和字符串之间的相互转化教程
2020/10/27 Javascript
[02:51]2014DOTA2国际邀请赛 IG战队官方纪录片
2014/07/21 DOTA
python实现的一个p2p文件传输实例
2014/06/04 Python
python批量生成本地ip地址的方法
2015/03/23 Python
Python脚本获取操作系统版本信息
2016/12/17 Python
python numpy函数中的linspace创建等差数列详解
2017/10/13 Python
浅谈python3发送post请求参数为空的情况
2018/12/28 Python
用Python制作mini翻译器的实现示例
2020/08/17 Python
python爬虫智能翻页批量下载文件的实例详解
2021/02/02 Python
CSS3实现的文本3D效果附图
2014/09/03 HTML / CSS
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
canvas实现手机的手势解锁的步骤详细
2020/03/16 HTML / CSS
英国时尚家具、家居饰品及礼品商店:Graham & Green
2016/09/15 全球购物
工商管理应届生求职信
2013/10/07 职场文书
会计电算化专业应届大学生求职信
2013/10/22 职场文书
民事起诉书范本
2015/05/19 职场文书
工伤劳动仲裁代理词
2015/05/25 职场文书
大学毕业晚会开场白
2015/05/29 职场文书
2015年大学生暑期实习报告
2015/07/13 职场文书
如何在Mac上通过docker配置PHP开发环境
2021/05/29 PHP