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进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

一文解密Python进行监控进程的黑科技

《一文解密Python进行监控进程的黑科技》在计算机系统管理和应用性能优化中,监控进程的CPU、内存和IO使用率是非常重要的任务,下面我们就来讲讲如何Python写一个简单使用的监控进程的工具吧... 目录准备工作监控CPU使用率监控内存使用率监控IO使用率小工具代码整合在计算机系统管理和应用性能优化中,监

如何使用Lombok进行spring 注入

《如何使用Lombok进行spring注入》本文介绍如何用Lombok简化Spring注入,推荐优先使用setter注入,通过注解自动生成getter/setter及构造器,减少冗余代码,提升开发效... Lombok为了开发环境简化代码,好处不用多说。spring 注入方式为2种,构造器注入和setter

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

JAVA中安装多个JDK的方法

《JAVA中安装多个JDK的方法》文章介绍了在Windows系统上安装多个JDK版本的方法,包括下载、安装路径修改、环境变量配置(JAVA_HOME和Path),并说明如何通过调整JAVA_HOME在... 首先去oracle官网下载好两个版本不同的jdk(需要登录Oracle账号,没有可以免费注册)下载完

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

linux解压缩 xxx.jar文件进行内部操作过程

《linux解压缩xxx.jar文件进行内部操作过程》:本文主要介绍linux解压缩xxx.jar文件进行内部操作,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、解压文件二、压缩文件总结一、解压文件1、把 xxx.jar 文件放在服务器上,并进入当前目录#

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr