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 session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
Nov 27 PHP
PHP最常用的2种设计模式工厂模式和单例模式介绍
Aug 14 PHP
解析php根据ip查询所在地区(非常有用,赶集网就用到)
Jul 01 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
Jan 19 PHP
用 Composer构建自己的 PHP 框架之使用 ORM
Oct 30 PHP
php格式化金额函数分享
Feb 02 PHP
百度地图API使用方法详解
Aug 25 PHP
PHP将URL转换成短网址的算法分享
Sep 13 PHP
PHP自定义函数实现格式化秒的方法
Sep 14 PHP
PHP实现微信商户支付企业付款到零钱功能
Sep 30 PHP
php + WebUploader实现图片批量上传功能
May 06 PHP
Swoole扩展的6种模式深入详解
Mar 04 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
php5 non-thread-safe和thread-safe这两个版本的区别分析
2010/03/13 PHP
PHP树-不需要递归的实现方法
2016/06/21 PHP
php array_pop 删除数组最后一个元素实例
2016/11/02 PHP
简单的jquery左侧导航栏和页面选中效果
2014/08/21 Javascript
JS实现单击输入框弹出选择框效果完整实例
2015/12/14 Javascript
高效的jquery数字滚动特效
2015/12/17 Javascript
Laravel中常见的错误与解决方法小结
2016/08/30 Javascript
Bootstrap超大屏幕的实现代码
2017/03/22 Javascript
JavaScript设计模式之策略模式详解
2017/06/09 Javascript
easyui-datagrid开发实践(总结)
2017/08/02 Javascript
Vue.js递归组件构建树形菜单
2017/12/24 Javascript
深入理解NodeJS 多进程和集群
2018/10/17 NodeJs
微信小程序实现时间预约功能
2018/11/27 Javascript
js实现json数组分组合并操作示例
2019/02/12 Javascript
每周一练 之 数据结构与算法(Stack)
2019/04/16 Javascript
关于vue 项目中浏览器跨域的配置问题
2020/11/10 Javascript
vue项目中js-cookie的使用存储token操作
2020/11/13 Javascript
[02:34]2016完美“圣”典风云人物:BurNIng专访
2016/12/10 DOTA
跟老齐学Python之用Python计算
2014/09/12 Python
python中__call__方法示例分析
2014/10/11 Python
Python写的英文字符大小写转换代码示例
2015/03/06 Python
基于Django filter中用contains和icontains的区别(详解)
2017/12/12 Python
Python3 replace()函数使用方法
2018/03/19 Python
对python捕获ctrl+c手工中断程序的两种方法详解
2018/12/26 Python
Jupyter notebook 远程配置及SSL加密教程
2020/04/14 Python
使用Python封装excel操作指南
2021/01/29 Python
HTML5新特性之type=file文件上传功能
2018/02/02 HTML / CSS
泰坦健身器材:Titan Fitness
2018/02/13 全球购物
银行介绍信范文
2014/01/10 职场文书
跳蚤市场口号
2014/06/13 职场文书
动漫设计与制作专业推荐信
2014/07/07 职场文书
庆国庆活动总结
2014/08/28 职场文书
《悬崖边的树》读后感2篇
2019/12/02 职场文书
Python爬虫基础之爬虫的分类知识总结
2021/05/13 Python
python实现MD5进行文件去重的示例代码
2021/07/09 Python
聊聊Python String型列表求最值的问题
2022/01/18 Python