array_multisort 对多个数组或多维数组进行排序

2024-01-16 01:48

本文主要是介绍array_multisort 对多个数组或多维数组进行排序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、经历背景

因为平台发放了很多奖励任务给用户做来确保平台用户的活跃度,那么就会有查看用户在这个子平台的所有的任务,并按照一定的规则和权重来展示给用户,那么这个一定的规则就需要自己去想喽

二、它来了,它来了

既然是有奖励的任务,首要的规则是麦粒降序吧,其次是任务的创建时间吧,目前就能YY到这两种,今天就按照这两种来实现

三、挡住—实现

首先对于数据的操作,肯定一堆查询,获取子平台的文章、调研、会议、聊天室等类型的所有任务合集,那合在了一起以后,排序吧,一个方法搞定,就是这么神奇,这个重量级的嘉宾就是array_multisort

方法说明:

array_multisort ( array &$array1 [, mixed $array1_sort_order = SORT_ASC [, mixed $array1_sort_flags = SORT_REGULAR [, mixed $... ]]] ) : bool
参数解析
array1要排序的数组array
array1_sort_order之前 array 参数要排列的顺序。 SORT_ASC 按照上升顺序排序, SORT_DESC 按照下降顺序排序。此参数可以和 array1_sort_flags 互换,也可以完全删除,默认是 SORT_ASC
array1_sort_flags为 array 参数设定选项:
可选的选项,可提供更多数组,跟随在 sort order 和 sort flag 之后。 提供的数组和之前的数组要有相同数量的元素。 换言之,排序是按字典顺序排列的

排序类型标志:

  • SORT_REGULAR - 将项目按照通常方法比较(不修改类型)
  • SORT_NUMERIC - 按照数字大小比较
  • SORT_STRING - 按照字符串比较
  • SORT_LOCALE_STRING - 根据当前的本地化设置,按照字符串比较。 它会使用 locale 信息,可以通过 setlocale() 修改此信息
  • SORT_NATURAL - 以字符串的"自然排序",类似 natsort()
  • SORT_FLAG_CASE - 可以组合 (按位或 OR) SORT_STRING 或者 SORT_NATURAL 大小写不敏感的方式排序字符串
3.1、数据库的结果为:
array:4 [▼0 => array:9 [▼"id" => 48402"title" => "测试主题""type" => "meeting""is_finish" => 0"url" => "http://edp.medlive.test/doctor/activity/transit/48402?from=wechat_task_center""created_at" => 1569296548"name" => "EDP学术""headtitle" => "EDP学术""maili" => 50]1 => array:9 [▼"id" => 45882"title" => "您好""type" => "chat""is_finish" => 0"url" => "http://edp.medlive.test/doctor/activity/talk/45882""created_at" => 1568785867"name" => "EDP研究""headtitle" => "EDP研究""maili" => 20]2 => array:9 [▼"id" => 46175"title" => "你好""type" => "chat""is_finish" => 1"url" => "http://edp.medlive.test/doctor/activity/talk/46175""created_at" => 1568858009"name" => "EDP研究""headtitle" => "EDP研究""maili" => 20]3 => array:9 [▼"id" => 47041"title" => "确认""type" => "chat""is_finish" => 0"url" => "http://edp.medlive.test/doctor/activity/talk/47041""created_at" => 1568964549"name" => "EDP研究""headtitle" => "EDP研究""maili" => 20]
]
3.2、直接操作
 $array_column = array_column($aAllTasks, 'maili');$array_column_other = array_column($aAllTasks,'created_at');array_multisort($array_column, SORT_DESC ,$array_column_other, SORT_DESC ,$aAllTasks);

很简单,是吧,array_column是直接根据你给定的索引获取数组中值,当然你可以可以想php.net网站中的示例一样:

// 取得列的列表
foreach ($data as $key => $row) {$volume[$key]  = $row['volume'];$edition[$key] = $row['edition'];
}// 将数据根据 volume 降序排列,根据 edition 升序排列
// 把 $data 作为最后一个参数,以通用键排序
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);

这样出来的结果就是:按照maili字段降序排列,当maili值一样的时候,根据created_at值再降序排列,OVER

四、走喽

其实对于数组的处理,PHP内含有大量的你能用到的方法,可以多看看手册哟,切记,是看完,尤其的下面的例子

这篇关于array_multisort 对多个数组或多维数组进行排序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/610934

相关文章

Python在二进制文件中进行数据搜索的实战指南

《Python在二进制文件中进行数据搜索的实战指南》在二进制文件中搜索特定数据是编程中常见的任务,尤其在日志分析、程序调试和二进制数据处理中尤为重要,下面我们就来看看如何使用Python实现这一功能吧... 目录简介1. 二进制文件搜索概述2. python二进制模式文件读取(rb)2.1 二进制模式与文本

SQL Server 中的表进行行转列场景示例

《SQLServer中的表进行行转列场景示例》本文详细介绍了SQLServer行转列(Pivot)的三种常用写法,包括固定列名、条件聚合和动态列名,文章还提供了实际示例、动态列数处理、性能优化建议... 目录一、常见场景示例二、写法 1:PIVOT(固定列名)三、写法 2:条件聚合(CASE WHEN)四、

Python自动化提取多个Word文档的文本

《Python自动化提取多个Word文档的文本》在日常工作和学习中,我们经常需要处理大量的Word文档,本文将深入探讨如何利用Python批量提取Word文档中的文本内容,帮助你解放生产力,感兴趣的小... 目录为什么需要批量提取Word文档文本批量提取Word文本的核心技术与工具安装 Spire.Doc

Java数组动态扩容的实现示例

《Java数组动态扩容的实现示例》本文主要介绍了Java数组动态扩容的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1 问题2 方法3 结语1 问题实现动态的给数组添加元素效果,实现对数组扩容,原始数组使用静态分配

C#实现将Excel工作表拆分为多个窗格

《C#实现将Excel工作表拆分为多个窗格》在日常工作中,我们经常需要处理包含大量数据的Excel文件,本文将深入探讨如何在C#中利用强大的Spire.XLSfor.NET自动化实现Excel工作表的... 目录为什么需要拆分 Excel 窗格借助 Spire.XLS for .NET 实现冻结窗格(Fro

JAVA SpringBoot集成Jasypt进行加密、解密的详细过程

《JAVASpringBoot集成Jasypt进行加密、解密的详细过程》文章详细介绍了如何在SpringBoot项目中集成Jasypt进行加密和解密,包括Jasypt简介、如何添加依赖、配置加密密钥... 目录Java (SpringBoot) 集成 Jasypt 进行加密、解密 - 详细教程一、Jasyp

linux实现对.jar文件的配置文件进行修改

《linux实现对.jar文件的配置文件进行修改》文章讲述了如何使用Linux系统修改.jar文件的配置文件,包括进入文件夹、编辑文件、保存并退出编辑器,以及重新启动项目... 目录linux对.jar文件的配置文件进行修改第一步第二步 第三步第四步总结linux对.jar文件的配置文件进行修改第一步进

Go语言中如何进行数据库查询操作

《Go语言中如何进行数据库查询操作》在Go语言中,与数据库交互通常通过使用数据库驱动来实现,Go语言支持多种数据库,如MySQL、PostgreSQL、SQLite等,每种数据库都有其对应的官方或第三... 查询函数QueryRow和Query详细对比特性QueryRowQuery返回值数量1个:*sql

Java Map排序如何按照值按照键排序

《JavaMap排序如何按照值按照键排序》该文章主要介绍Java中三种Map(HashMap、LinkedHashMap、TreeMap)的默认排序行为及实现按键排序和按值排序的方法,每种方法结合实... 目录一、先理清 3 种 Map 的默认排序行为二、按「键」排序的实现方式1. 方式 1:用 TreeM

JavaScript对象转数组的三种方法实现

《JavaScript对象转数组的三种方法实现》本文介绍了在JavaScript中将对象转换为数组的三种实用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录方法1:使用Object.keys()和Array.map()方法2:使用Object.entr