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 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
Oct 22 PHP
有关PHP性能优化的介绍
Jun 20 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
Apr 24 PHP
Destoon旺旺无法正常显示,点击提示“会员名不存在”的解决办法
Jun 21 PHP
PHP集成百度Ueditor 1.4.3
Nov 23 PHP
在SAE上搭建最新wordpress的方法
Dec 21 PHP
PHP对XML内容进行修改和删除实例代码
Oct 26 PHP
PHP实现的基于单向链表解决约瑟夫环问题示例
Sep 30 PHP
Yii2.0实现的批量更新及批量插入功能示例
Jan 29 PHP
php简单计算权重的方法示例【适合抽奖类应用】
Jun 10 PHP
Thinkphp5框架异常处理操作实例分析
Jun 03 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 CI框架插入一条或多条sql记录示例
2014/07/29 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
2014/12/17 PHP
不用锚点也可以平滑滚动到页面的指定位置实现代码
2013/05/08 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
整理Javascript函数学习笔记
2015/12/01 Javascript
Javascript 事件冒泡机制详细介绍
2016/10/10 Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
2017/09/21 Javascript
javascript高仿热血传奇游戏实现代码
2018/02/22 Javascript
JavaScript使用math.js进行精确计算操作示例
2018/06/19 Javascript
JSONP原理及应用实例详解
2018/09/13 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
微信小程序下拉框搜索功能的实现方法
2019/07/31 Javascript
vue进入页面时不在顶部,检测滚动返回顶部按钮问题及解决方法
2019/10/30 Javascript
weui中的picker使用js进行动态绑定数据问题
2019/11/06 Javascript
如何基于javascript实现贪吃蛇游戏
2020/02/09 Javascript
js实现网页版贪吃蛇游戏
2020/02/22 Javascript
Vue 打包的静态文件不能直接运行的原因及解决办法
2020/11/19 Vue.js
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
2016/12/15 Python
python处理csv中的空值方法
2018/06/22 Python
python使用Matplotlib画条形图
2020/03/25 Python
pytorch 自定义卷积核进行卷积操作方式
2019/12/30 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
python中rb含义理解
2020/06/18 Python
TobyDeals美国:在电子产品上获得最好的优惠和折扣
2019/08/11 全球购物
编辑个人求职信范文
2013/09/21 职场文书
应届生文秘专业个人自荐信格式
2013/09/21 职场文书
花卉与景观设计系大学生求职信
2013/10/01 职场文书
银行求职信怎么写
2014/05/26 职场文书
2014年教师节红领巾广播稿
2014/09/10 职场文书
意外伤害赔偿协议书
2014/09/16 职场文书
自我查摆剖析材料
2014/10/11 职场文书
干部考察材料范文
2014/12/24 职场文书
幼儿园六一主持词开场白
2015/05/28 职场文书
保留意见审计报告
2015/06/05 职场文书
threejs太阳光与阴影效果实例代码
2022/04/05 Javascript
Redis+AOP+自定义注解实现限流
2022/06/28 Redis