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模板引擎SMARTY
Oct 09 PHP
FirePHP 推荐一款PHP调试工具
Apr 23 PHP
Pain 全世界最小最简单的PHP模板引擎 (普通版)
Oct 23 PHP
PHP中file_exists函数不支持中文名的解决方法
Jul 26 PHP
用HTML/JS/PHP方式实现页面延时跳转的简单实例
Jul 18 PHP
通过php动态传数据到highcharts
Apr 05 PHP
ThinkPHP实现图片上传操作的方法详解
May 08 PHP
PHP简单获取上月、本月、近15天、近30天的方法示例
Jul 03 PHP
PHP基于SimpleXML生成和解析xml的方法示例
Jul 17 PHP
php对微信支付回调处理的方法
Aug 23 PHP
Laravel框架学习笔记之批量更新数据功能
May 30 PHP
thinkPHP事务操作简单案例分析
Oct 17 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
PHP4在WinXP下IIS和Apache2服务器上的安装实例
2006/10/09 PHP
PHP 在线翻译函数代码
2009/05/07 PHP
smarty 缓存控制前的页面静态化原理
2013/03/15 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
2013/12/20 PHP
PHP中捕获超时事件的方法实例
2015/02/12 PHP
PHP实现关键字搜索后描红功能示例
2019/07/03 PHP
js表数据排序 sort table data
2009/02/18 Javascript
JavaScript 操作键盘的Enter事件(键盘任何事件),兼容多浏览器
2010/10/11 Javascript
jquery trigger伪造a标签的click事件取代window.open方法
2014/06/23 Javascript
Express作者TJ告别Node.js奔向Go
2014/07/14 Javascript
jQuery 局部div刷新和全局刷新方法总结
2016/10/05 Javascript
快速解决js中window.location.href不工作的问题
2016/11/02 Javascript
Vue 实用分页paging实例代码
2017/04/12 Javascript
Vue computed计算属性的使用方法
2017/07/14 Javascript
基于js中的存储键值对以及注意事项介绍
2018/03/30 Javascript
vue axios 给生产环境和发布环境配置不同的接口地址(推荐)
2018/05/08 Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
2020/03/10 Javascript
Bootstrap FileInput实现图片上传功能
2021/01/28 Javascript
[01:49]一目了然!DOTA2DotA快捷操作对比第二弹
2014/05/16 DOTA
Python时间模块datetime、time、calendar的使用方法
2016/01/13 Python
python matplotlib中文显示参数设置解析
2017/12/15 Python
python3+PyQt5重新实现QT事件处理程序
2018/04/19 Python
pyqt5 获取显示器的分辨率的方法
2019/06/18 Python
在python中利用try..except来代替if..else的用法
2019/12/19 Python
django创建css文件夹的具体方法
2020/07/31 Python
意大利香水和化妆品购物网站:Parfimo.it
2019/10/06 全球购物
存储过程和sql语句的优缺点
2014/07/02 面试题
《理想》教学反思
2014/02/17 职场文书
科研课题实施方案
2014/03/18 职场文书
竞聘演讲稿开场白
2014/08/25 职场文书
幼儿园教师师德师风演讲稿:爱我所爱 无悔青春
2014/09/10 职场文书
2014国庆节演讲稿:祖国在我心中(400字)
2014/09/25 职场文书
政风行风整改报告
2014/11/06 职场文书
2015年党员公开承诺事项
2015/04/27 职场文书
毛主席纪念堂观后感
2015/06/17 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书