PHP——数组根据某一键值合并
前言
其实要实现很简单直接foreach,再根据PHP中数组的特性就可以轻松实现。
步骤
这是源数据的格式
$info = [
[
"gname" => "特别关心" ,
"gid" => 1, "fid" => 2,
"nickname" => "立冬" ,
"avatar" => "http://cache.wangyangyang.vip/avatar_4.gif",
"remark" => "" ,
"desc" => "雪花一片一片的洒落在窗台上,田野间,为大地换上了新装~"
],
[
"gname" => "我的好友",
"gid" => 2,
"fid" => 3,
"nickname" => "立春",
"avatar" => "http://cache.wangyangyang.vip/avatar_3.jpg",
"remark" => "",
"desc" => "我在春天等着你的到来~"
],
[
"gname" => "朋友" ,
"gid" => 3,
"fid" => 4,
"nickname" => "立夏" ,
"avatar" => "http://cache.wangyangyang.vip/12222222222222.jpg" ,
"remark" => "" ,
"desc" => "你好啊,夏天!"
],
[
"gname" => "同学" ,
"gid" => 4,
"fid" => 5,
"nickname" => "小雨" ,
"avatar" => "http://cache.wangyangyang.vip/avatar_5.jpg" ,
"remark" => "" ,
"desc" => "人间四月芳菲尽,山寺桃花始盛开!"
],
[
"gname" =>"同学" ,
"gid" => 4,
"fid" => 6,
"nickname" => "残雪殇" ,
"avatar" => "http://cache.wangyangyang.vip/12222222222222.jpg" ,
"remark" => "小雪" ,
"desc" => "断桥残雪,三潭映月,君可知为何如此?"
]
]
合并后的数据
将数组中某一个相同的值作为键,然后生成一个新的三维数组
$list = [];
foreach ($info as $k => $v) {
$list[$v['gid']]['gid'] = $v['gid'];
$list[$v['gid']]['gname'] = $v['gname'];
$list[$v['gid']]['list'][] = $v;
}
得到数据
$list=[
1=>[
"gid"=>1,
"gname"=> "特别关心",
"list"=>[
[
"gname"=>"特别关心",
"gid"=>1,
"fid"=>2,
"nickname"=>"立冬",
"avatar"=>"http://cache.wangyangyang.vip/avatar_4.gif",
"remark"=>"",
"desc"=>"雪花一片一片的洒落在窗台上,田野间,为大地换上了新装~"
]
]
],
2=> [
"gid"=>2,
"gname"=> "我的好友",
"list"=>[
[
"gname"=>"我的好友",
"gid"=>2,
"fid"=>3,
"nickname"=> "立春",
"avatar"=>"http://cache.wangyangyang.vip/avatar_3.jpg",
"remark"=>"",
"desc"=> "我在春天等着你的到来~"
]
]
],
3=>[
"gid"=>3,
"gname"=>"朋友",
"list"=>[
[
"gname"=>"朋友",
"gid"=>3,
"fid"=>4,
"nickname"=> "立夏",
"avatar"=> "http://cache.wangyangyang.vip/12222222222222.jpg",
"remark"=> "",
"desc"=>"你好啊,夏天!"
]
]
],
4=>[
"gid"=>4,
"gname"=>"同学",
"list"=>[
[
"gname"=>"同学",
"gid"=>4,
"fid"=>5,
"nickname"=>"小雨",
"avatar"=>"http://cache.wangyangyang.vip/avatar_5.jpg",
"remark"=> "",
"desc"=>"人间四月芳菲尽,山寺桃花始盛开!"
],
[
"gname"=> "同学",
"gid"=>4,
"fid"=>6,
"nickname"=>"残雪殇",
"avatar"=>"http://cache.wangyangyang.vip/12222222222222.jpg",
"remark"=> "小雪",
"desc"=>"断桥残雪,三潭映月,君可知为何如此?"
]
]
]
]
PHP——数组根据某一键值合并的更多相关文章
- php将一个二维数组按照某个字段值合并成一维数组,如果有重复则将重复的合并成二维数组
版权声明:本文为博主原创文章,未经博主允许不得转载. 最近工作中碰到一个问题,用PHP将一个二维数组按照二维数组中的各个项中的某个特定字段值合并成一维数组,如果有重复则将重复的合并成二维数组,生成的二 ...
- PHP按值合并数组
/** * PHP按值合并数组 * */ function my_array_merge(&$array1, &$array2) { $result = Array(); foreac ...
- php合并数组并保留键值的方法
答案:使用 + 连接两个数组,替换array_merge()函数. php合并数组,一般会使用array_merge方法. array_merge — 合并一个或多个数组 array array_me ...
- php 按列值合并数据
/* * PHP按值合并数组 * */ function my_array_merge(&$array1, &$array2) { $result = Array(); foreach ...
- 将两个数组相同index的value合并成一个新的value组成一个新的数组
将两个数组相同index的value合并成一个新的value组成一个新的数组 前提: 这两个数组的长度相同 生成后的新数组长度也相同 返回值都是对象 把rows对象的key和value弄成两个数组, ...
- Java数组,去掉重复值、增加、删除数组元素
import java.util.List; import java.util.ArrayList; import java.util.Set; import java.util.HashSet; p ...
- c# 获取数组中最大数的值
求数组中最大的数的值:1.数组的max函数: class Program { static void Main(string[] args) { ,,,,,,,,,}; int max= GetMax ...
- bit-map牛刀小试:数组test[X]的值所有在区间[1, 8000]中, 现要输出test中反复的数。要求:1. 不能改变原数组; 2.时间复杂度为O(X);3.除test外空间不超过1KB
先来看看这个题目:数组test[X]的值所有在区间[1, 8000]中. 现要输出test中反复的数.要求:1. 不能改变原数组; 2.时间复杂度为O(X);3.除test外空间不超过1KB. 好, ...
- C++ multimap容器访问同一键值元素的不同方法
multimap是一种多元map容器,允许一个键对应多个值. 本文介绍了 multimap访问同一键值元素的三种不同方法,详细看下面代码: typedef multimap<string,int ...
随机推荐
- Redis实现实时热点查询
Redis内存淘汰 定义: 指的是用户存储的一些键被可以被Redis主动地从实例中删除,从而产生读miss的情况 机制存在原因: Redis最常见的两种应用场景为缓存和持久存储 首先要明确的一个问题是 ...
- 【记录】【java】反射设值取值
1.设值 /** * 根据属性名设置属性值 * * @param fieldName * @param object * @return */ public boolean setFieldValue ...
- LinkedHashSet有没有重复的元素
1.LinkedHashSet 的概述和使用 llinkedHashSet 的特点: 是唯一能保证怎么存就怎么输出的 set 集合,并且去重复 1 LinkedHashSet<String& ...
- 《Effective Objective-C》概念篇
1.运行时 OC 语言由 Smalltalk(20世纪70年代出现的一种面向对象的语言) 演化而来,后者是消息型语言的鼻祖. OC 使用动态绑定的消息结构,在运行时检查对象类型. 使用消息结构的语言, ...
- [cf 585 E] Marbles
(一道Div2E不会,我太难了) 题意: 给你一个长度为$n$的颜色序列$A$,每次操作可以选择两个相邻元素交换,求把序列交换成“相同颜色挨在一起”所需的最少操作数. 按颜色排序:设颜色$col$在序 ...
- git 学习笔记 ---标签管理
发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本.将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来.所以,标签也是版本库的一个快照 ...
- git 学习笔记 --- Rebase
在上一节我们看到了,多人在同一个分支上协作时,很容易出现冲突.即使没有冲突,后push的童鞋不得不先pull,在本地合并,然后才能push成功. 每次合并再push后,分支变成了这样: $ git l ...
- springcolud 的学习(四)服务治理. Eureka
什么是服务治理在传统rpc远程调用中,服务与服务依赖关系,管理比较复杂,所以需要使用服务治理,管理服务与服务之间依赖关系,可以实现服务调用.负载均衡.容错等,实现服务发现与注册.服务注册与发现 在服务 ...
- java之spring mvc之页面跳转
1. 如果返回值为ModelAndView,在处理方法中,返回null时,默认跳转的视图名称为请求名.跳转结果会根据视图解析器来跳转. @RequestMapping("/hello.do& ...
- win10系统驱动备份及还原
win10系统驱动备份及还原 方法如下: 1.右键单击开始按钮,选择“命令提示符(管理员)” 2.输入如下命令后按回车,等待备份完成: dism /online /export-driver /des ...