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分页显示制作详细讲解
Oct 09 PHP
一个PHP日历程序
Dec 06 PHP
PHP执行速率优化技巧小结
Mar 15 PHP
require(),include(),require_once()和include_once()区别
Mar 27 PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
Mar 05 PHP
PHP乱码问题,UTF-8乱码常见问题小结
Apr 09 PHP
destoon各类调用汇总
Jun 20 PHP
php使用glob函数快速查询指定目录文件的方法
Nov 15 PHP
使用PHP实现生成HTML静态页面
Nov 18 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
Jan 12 PHP
PHP Web表单生成器案例分析
Jun 02 PHP
php实现商城购物车的思路和源码分析
Jul 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
深入PHP FTP类的详解
2013/06/13 PHP
PHP实现通用alert函数的方法
2015/03/11 PHP
php使用正则表达式去掉html中的注释方法
2016/11/03 PHP
PHP递归遍历指定文件夹内的文件实现方法
2016/11/15 PHP
javascript jQuery插件练习
2008/12/24 Javascript
jquery实现邮箱自动补全功能示例分享
2014/02/17 Javascript
直接在JS里创建JSON数据然后遍历使用
2014/07/25 Javascript
基于javascript实现浏览器滚动条快到底部时自动加载数据
2015/11/30 Javascript
AngularJS Module方法详解
2015/12/08 Javascript
jQuery基本选择器之标签名选择器
2016/09/03 Javascript
angular.js之路由的选择方法
2016/09/24 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
2017/07/11 jQuery
vue插件vue-resource的使用笔记(小结)
2017/08/04 Javascript
node.js实现微信JS-API封装接口的示例代码
2017/09/06 Javascript
vue.js 获取select中的value实例
2018/03/01 Javascript
angularjs 缓存的使用详解
2018/03/19 Javascript
vue中倒计时组件的实例代码
2018/07/06 Javascript
JavaScript继承的特性与实践应用深入详解
2018/12/30 Javascript
Vue批量图片显示时遇到的路径被解析问题
2019/03/28 Javascript
了解在JavaScript中将值转换为字符串的5种方法
2019/06/06 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
2020/04/11 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
[01:02]2014 DOTA2国际邀请赛中国区预选赛 现场抢先看
2014/05/22 DOTA
Python面向对象程序设计之继承与多继承用法分析
2018/07/13 Python
Python DataFrame.groupby()聚合函数,分组级运算
2018/09/18 Python
Django框架实现的分页demo示例
2019/05/25 Python
python__name__原理及用法详解
2019/11/02 Python
Python for循环与getitem的关系详解
2020/01/02 Python
PyTorch 普通卷积和空洞卷积实例
2020/01/07 Python
Python 如何批量更新已安装的库
2020/05/26 Python
质量月口号
2014/06/20 职场文书
机电专业毕业生求职信
2014/07/01 职场文书
团委工作总结2015
2015/04/02 职场文书
写给同事的离职感言
2015/08/04 职场文书
html+css实现环绕倒影加载特效
2021/07/07 HTML / CSS
Django模型层实现多表关系创建和多表操作
2021/07/21 Python