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自动化办公之合并多个Excel

《Python自动化办公之合并多个Excel》在日常的办公自动化工作中,尤其是处理大量数据时,合并多个Excel表格是一个常见且繁琐的任务,下面小编就来为大家介绍一下如何使用Python轻松实现合... 目录为什么选择 python 自动化目标使用 Python 合并多个 Excel 文件安装所需库示例代码

C++一个数组赋值给另一个数组方式

《C++一个数组赋值给另一个数组方式》文章介绍了三种在C++中将一个数组赋值给另一个数组的方法:使用循环逐个元素赋值、使用标准库函数std::copy或std::memcpy以及使用标准库容器,每种方... 目录C++一个数组赋值给另一个数组循环遍历赋值使用标准库中的函数 std::copy 或 std::

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

linux下多个硬盘划分到同一挂载点问题

《linux下多个硬盘划分到同一挂载点问题》在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成... 目录linux下多个硬盘划分到同一挂载点需要明确的几个概念硬盘插上默认的是非lvm总结Linux下多

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景