PHP 二维数组根据另一个二维数组的值进行排序

二维数组根据另一个二维数组的某个值进行排序

例子:有以下两个二维数组

goods:道具数组,记录了道具id、道具名称、道具价值

goodsUseTimes:道具使用数组,记录了道具id和道具被使用的次数

需求:道具数组需要按道具被使用次数进行排序

// 需要排序的数组
$goods = [['goods_id' => 1001,'goods_name' => '气球','goods_value' => 32 ],['goods_id' => 1005,'goods_name' => '元宝','goods_value' => 1 ],['goods_id' => 1017,'goods_name' => '钻石','goods_value' => 432 ],['goods_id' => 1066,'goods_name' => '金币','goods_value' => 666 ]
];// 排序数组模板
$goodsUseTimes = [['goods_id' => 1001,'use_times' => 344],['goods_id' => 1005,'use_times' => 2],['goods_id' => 1017,'use_times' => 63],['goods_id' => 1066,'use_times' => 27],['goods_id' => 2066,'use_times' => 683],['goods_id' => 2042,'use_times' => 45]];// 合并数组
$arr = array_column($goodsUseTimes, 'use_times', 'goods_id');
foreach ($goods as &$v) {$v['goods_use_times'] = isset($arr[$v['goods_id']]) ? $arr[$v['goods_id']] :0;
}// 排序,升序:SORT_ASC,降序:SORT_DESC
$useTimes = array_column($goods, 'goods_use_times');
array_multisort($useTimes,SORT_DESC,$goods);print_r($goods);

输出结果

Array
([0] => Array([goods_id] => 1001[goods_name] => 气球[goods_value] => 32[goods_use_times] => 344)[1] => Array([goods_id] => 1017[goods_name] => 钻石[goods_value] => 432[goods_use_times] => 63)[2] => Array([goods_id] => 1066[goods_name] => 金币[goods_value] => 666[goods_use_times] => 27)[3] => Array([goods_id] => 1005[goods_name] => 元宝[goods_value] => 1[goods_use_times] => 2))

PS:两个二维数组之间需要存在相同的字段才可以进行排序

PHP 二维数组根据另一个二维数组的值进行排序相关推荐

  1. PHP中 如何将二位数组按某一个或多个字段值(升序/降序)排序?数字索引被重置,关联索引保持不变...

    如何将二位数组按某一个或多个字段值(升序/降序)排序?数字索引被重置,关联索引保持不变 1.$arr=array( 2. array('id'=>1,'name'=>'will','age ...

  2. 22、在有序数组中插入一个数值,数组仍然有序——数组

    插入数据,有序数组仍然有序 方法一: 在一个数组中完成的操作 代码实现: /*2017年6月19日16:31:52功能:向有序的数组中插入一个数据,但是数据仍然有序 */ #include<st ...

  3. java 数组 去掉第一个_java中数组的理解以及如何去掉断点

    数组也是对象 数组是放置相同类型的数据 数组里面放置的每一个变量都是有下标的. 数组的长度是确定的 数组的元素类型必须是相同的 数组类型可以是任何数据类型,包括基本类型和引用类型 数组变量属于引用类型 ...

  4. php数组操作之合并相同键名的值,排序,排重,去空值等

    一.前言 数组操作是咱们在编程时候经常遇到的,只是数组函数有点多,用到的时候难免会想不起来.特别是针对多维数组的操作,有的时候用自带的数组函数真的很方便,可以避免多次的foreach循环,这里记录一下 ...

  5. 二位数组按某一个或多个字段值(升序/降序)排序

    输出结果: 转载于:https://www.cnblogs.com/573583868wuy/p/5229307.html

  6. java可存储100个整数的数组_定义一个一维整数数组,其中储存1000个1至100以内的整数,并统计出整数出现的次数(Java写出来)...

    代码如下: import java.util.Hashtable; import java.util.Random; public class Demo { public static void ma ...

  7. 返回一个二维整数数组中的最大的子数组和

    一.题目: 1.输入一个二维整形数组,数组里有正数有负数. 2.二维数组中连续的一个子矩阵组成一个子数组. 3.求所有子数组的和的最大值. 二.设计思想: .定义一个二维数组,使用二重循环对其进行赋值 ...

  8. C语言高级编程:二维数组、指针的指针、数组指针、指针数组

    1. 定义 int **p;  指针的指针 int (*p2)[5];  数组指针,指向一个数组 int *array[5];  指针数组,是一个int *类型数组 int array2[3][5]; ...

  9. php循环构建二维数组,php循环生成二维数组

    程序中定义了二维数组arr,arr有3行4列共12个元素,程序中采用for循环语句的嵌套来计算数组中各个元素的和,并将结果保存在sum变量中,最后打印输出结果. public ...... 1. 从数 ...

最新文章

  1. 【数字信号处理】相关函数 ( 卷积与交换性 | 相关函数不具有交换性 | 推导过程 )
  2. eclipse开发cocos2dx 3.2环境搭建之二: cocos2dx 3.2安装及测试运行 (An internal error occurred during: “C/C++ Indexe)
  3. vSphere5.0配置分布式交换机
  4. Loader 知识梳理(2) initLoader和restartLoader的区别
  5. projecteuler_介绍#ProjectEuler100挑战:编码成就的“黑暗灵魂”
  6. 封电脑机器码怎么解决_如何通过修改机器码解决游戏封号问题
  7. 黑苹果相关驱动介绍及其使用方法
  8. python:NBA比赛数据分析
  9. 短视频剪辑怎么做?4步教你快速入门
  10. c语言修改pdf文件内容,PDF怎么编辑修改?如何编辑PDF的内容?
  11. canvas实现动态矩形碰撞
  12. 微信小程序聊天功能 WebSocket 实现发送文字,图片,语音以及WebSocket 常见问题解决方案
  13. 程序员面试金典-刷题笔记
  14. mac中idea使用createNewFile创建文件
  15. 做一个有志青年,人生才有意义
  16. matlab求多元函数的极小值,[转载]利用MATLAB求多元函数的极值(2)
  17. 公司USB设备管理策略方案
  18. DHT11温湿度传感器编程详解
  19. 一文了解数字化转型,全球进入数字服务经济大时代
  20. 去掉RedisDesktopManager更新提示弹窗

热门文章

  1. 项目计划管理软件:GanttProject
  2. 南大通用GBase8s数据库备份恢复简介(一)
  3. 全屏模式下软键盘弹出遮挡输入框问题
  4. [书籍翻译]12周撰写期刊文章 学术出版成功指南——第 X 周 回应编辑的决定
  5. c语言设计乘车调度,数学建模论文校园公交车调度问题-—本科毕业设计.doc
  6. mongo find()后加一个first()是什么意思?
  7. 创建一个大数据平台的正确姿态
  8. 建立二叉树并实现层序遍历
  9. 小程序客服消息接口php,小程序客服接入
  10. 新浪微博登陆,获取微博用的信息