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 ...
随机推荐
- [转帖]Linux中buff/cache内存占用过高解决办法
Linux中buff/cache内存占用过高解决办法 https://www.cnblogs.com/rocky-AGE-24/p/7629500.html /proc/sys/vm/drop_cac ...
- 10步成为一个优秀的Java开发!
1.拥有坚实的基础并理解面向对象原则 Java开发人员必须深刻理解面向对象编程.如果没有面向对象编程的坚实基础,就无法感受到像Java这样的面向对象编程语言的美感. 如果你不太了解现象对象编程是什么, ...
- Google Colab——零成本玩转深度学习
前言 最近在学深度学习HyperLPR项目时,由于一直没有比较合适的设备训练深度学习的模型,所以在网上想找到提供模型训练,经过一段时间的搜索,最终发现了一个谷歌的产品--Google Colabora ...
- 第2课,python while循环的使用
引言: 上次课学习了python turtle库的基本使用,向前向后和转向.本次课需要画多个图形,简单的东西多起来就变得不简单了. 0/1是简单的,但却能组成丰富多彩的多媒体世界. 课程内容: 1. ...
- [cf 997 E] Good Subsegments
(这是石神找到的一道hiao题.) 题意: 你有一个长度为n的排列,有Q组询问$[l,r]$,每次询问$[l,r]$的子区间中有多少是好的. 一个区间是好的区间当且仅当该区间中的元素在排序后是连续的. ...
- K8S使用问题汇总
1,报错如下 Warning: kubectl apply should be used on resource created by either kubectl create --save-con ...
- shell编程必须要掌握的命令-xargs
一,说xargs命令前,说一下什么是shell编程 什么是shell编程呢,说白了就是按一定的规则把各种命令组织起来,完成一定的事情.纯属个人理解,哈哈.不管是交互式的shell,还是非交互的shel ...
- Sonatype安装
https://www.cnblogs.com/wotoufahaiduo/p/11223834.html Sonatype Nexus Repository Manage admin ccf0cab ...
- pandas-12 数学计算操作df.sum()、df.min()、df.max()、df.decribe()
pandas-12 数学计算操作df.sum().df.min().df.max().df.decribe() 常用的数学计算无非就是加减,最大值最小值,方差等等,pandas已经内置了很多方法来解决 ...
- python day 14: 作业:开发一个能够多用户上传文件的FTP脚本
目录 python day 14 1. 要求 2. 自己写的程序目录 3. models模块 4. settings模块 5. tcp_server模块 6. client模块 7. 后记 pytho ...