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 传值赋值与引用赋值的区别
Dec 29 PHP
php实现无限级分类实现代码(递归方法)
Jan 01 PHP
php中echo()和print()、require()和include()等易混淆函数的区别
Feb 22 PHP
解决PHP超大文件下载,断点续传下载的方法详解
Jun 06 PHP
phpmyadmin config.inc.php配置示例
Aug 27 PHP
yii上传文件或图片实例
Apr 01 PHP
php中session与cookie的比较
Jan 27 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
May 12 PHP
Zend Framework入门教程之Zend_Session会话操作详解
Dec 08 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
Sep 15 PHP
基于swoole实现多人聊天室
Jun 14 PHP
php使用redis的有序集合zset实现延迟队列应用示例
Feb 20 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
ThinkPHP后台首页index使用frameset时的注意事项分析
2014/08/22 PHP
Laravel中validation验证 返回中文提示 全局设置的方法
2019/09/29 PHP
基于jquery的兼容各种浏览器的iframe自适应高度的脚本
2010/08/13 Javascript
url地址自动加#号问题说明
2010/08/21 Javascript
juqery 学习之三 选择器 简单 内容
2010/11/25 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
2013/10/08 Javascript
javascript读取xml实现javascript分页
2013/12/13 Javascript
在JS中解析HTML字符串示例代码
2014/04/16 Javascript
javascript实现存储hmtl字符串示例
2014/04/25 Javascript
jquery验证邮箱格式是否正确实例讲解
2015/11/16 Javascript
Node.js+Express配置入门教程
2016/05/19 Javascript
AngularJS 模块化详解及实例代码
2016/09/14 Javascript
在localStorage中存储对象数组并读取的方法
2016/09/24 Javascript
Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法
2017/02/27 Javascript
Vue.js父与子组件之间传参示例
2017/02/28 Javascript
spirngmvc js传递复杂json参数到controller的实例
2018/03/29 Javascript
jQuery实现使用sort方法对json数据排序的方法
2018/04/17 jQuery
JavaScript和TypeScript中的void的具体使用
2019/09/12 Javascript
[02:42]决战东方!DOTA2亚洲邀请赛重启荣耀之争
2017/03/17 DOTA
python进程类subprocess的一些操作方法例子
2014/11/22 Python
Python中return self的用法详解
2018/07/27 Python
使用tensorflow实现线性回归
2018/09/08 Python
Python实现简单查找最长子串功能示例
2019/02/26 Python
python爬虫之自制英汉字典
2019/06/24 Python
CSS3基础(RGBa、text-shadow、box-shadow、border-radius)
2012/11/13 HTML / CSS
南威尔士家居商店:Leekes
2016/10/25 全球购物
意大利网上药房:Farmacia 33
2020/01/27 全球购物
如何定义一个可复用的服务
2014/09/30 面试题
公司会议策划方案
2014/05/17 职场文书
十佳党员事迹材料
2014/08/28 职场文书
党员对照检查材料思想汇报(党的群众路线)
2014/09/24 职场文书
离婚案件答辩状
2015/05/22 职场文书
全陪导游词开场白
2015/05/29 职场文书
2015年美容师个人工作总结
2015/10/14 职场文书
你有一份《诚信考试承诺书》待领取
2019/11/13 职场文书
python爬不同图片分别保存在不同文件夹中的实现
2021/04/02 Python