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数组实例总结与说明
Aug 23 PHP
php继承的一个应用
Sep 06 PHP
探讨捕获php错误信息方法的详解
Jun 09 PHP
php常用字符函数实例小结
Dec 29 PHP
PHP单例模式定义与使用实例详解
Feb 06 PHP
轻松实现php文件上传功能
Feb 17 PHP
PHP下 Mongodb 连接远程数据库的实例代码
Aug 30 PHP
弹出模态框modal的实现方法及实例
Sep 19 PHP
简单实现php上传文件功能
Sep 21 PHP
PHP分享图片的生成方法
Apr 25 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
Apr 27 PHP
PHP 7.4中使用预加载的方法详解
Jul 08 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中设置多级目录session的问题
2011/08/08 PHP
奇怪的PHP引用效率问题分析
2012/03/23 PHP
php实现上传图片生成缩略图示例
2014/04/13 PHP
深入理解PHP中的empty和isset函数
2016/05/26 PHP
PHP fopen函数用法实例讲解
2019/02/15 PHP
jQuery之折叠面板的深入解析
2013/06/19 Javascript
jQuery老黄历完整实现方法
2015/01/16 Javascript
javascript中的正则表达式使用指南
2015/03/01 Javascript
JavaScript仿支付宝密码输入框
2015/12/29 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
JavaScript中获取时间的函数集
2016/08/16 Javascript
jQuery弹出窗口简单实现代码
2017/03/09 Javascript
javascript实现table单元格点击展开隐藏效果(实例代码)
2017/04/10 Javascript
详解Vue-cli webpack移动端自动化构建rem问题
2018/04/07 Javascript
详解50行代码,Node爬虫练手项目
2019/04/22 Javascript
ES10的13个新特性示例(小结)
2019/09/23 Javascript
Ant Design Pro 下实现文件下载的实现代码
2019/12/03 Javascript
通过javascript实现扫雷游戏代码实例
2020/02/09 Javascript
Antd的Table组件嵌套Table以及选择框联动操作
2020/10/24 Javascript
[49:27]LGD vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
跟老齐学Python之有容乃大的list(4)
2014/09/28 Python
Python2.x利用commands模块执行Linux shell命令
2016/03/11 Python
在Python中调用Ping命令,批量IP的方法
2019/01/26 Python
python实现中文文本分句的例子
2019/07/15 Python
浅谈Python 敏感词过滤的实现
2019/08/15 Python
Python手动或自动协程操作方法解析
2020/06/22 Python
python 带时区的日期格式化操作
2020/10/23 Python
意大利网上购书网站:Libraccio.it
2021/02/03 全球购物
Java语言程序设计测试题判断题部分
2013/01/06 面试题
生产现场工艺工程师岗位职责
2013/11/28 职场文书
竞选文艺委员演讲稿
2014/04/28 职场文书
办公室主任岗位职责
2015/01/31 职场文书
安全教育第一课观后感
2015/06/17 职场文书
人生哲理妙语30条:淡写流年,笑过人生
2019/09/04 职场文书
MySQL中VARCHAR与CHAR格式数据的区别
2021/05/26 MySQL
试用1103暨1103、1101同门大比武 [ DAIWEI ]
2022/04/05 无线电