PHP的一个牛逼的数组排序函数array_multisort
函数详情,具体可参考 官方手册 array_multisort
实际问题是这样的,有这么一组数据:
$arr_times = array(
array('2018-04-12 04:25:00', 36144, 14368),
array('2018-04-12 04:25:01', 49320, 14368),
array('2018-04-09 04:25:00', 52658, 14368),
array('2018-04-10 14:25:03', 11535, 14368),
array('2018-04-13 14:25:10', 22635, 14368),
array('2018-04-01 14:25:30', 55558, 14368), );
第一列是时间,要求把这个数据按时间进行排序。明显是个多维数组,普通的sort啊,asort之类应该也能搞定,但是肯定得各种循环遍历,改变数组结构(比如加一列),想想就头大~
此时百度一番,一个函数从天而降,映入我的眼帘,闯进了我的心:是它,是它,就是它,我们的英雄,array_multisort~
这哥们写的这篇文章也很好地介绍了array_multisort 的使用:php基础篇-二维数组排序 array_multisort
具体的用法及该函数的各个参数含义,可直接看手册,不多说。不过有一点需要重点强调一下,对理解该函数很有帮助(这是我本地手册5.6版本中的一句话):
输入数组被当成一个表的列并以行来排序——这类似于 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话就按照下一个输入数组中相应值的大小来排序,依此类推。
秒懂了吧?也就是说,array_multisort 中各个数组参数,被当做sql的一个表进行处理了,你把第一个数组排序了,那么后面的数组也会被排序,那么关键就在第一个数组身上了:我们要构造这么个“主要数组”,使得这个“主要数组”被排序后,我们原始的数组,也会被排序。
再不懂的话,就再看看手册给的那几个例子。
那么我们自己的代码,该怎么写呢?看下面:
$arr_times = array(
array('2018-04-12 04:25:00', 36144, 14368),
array('2018-04-12 04:25:01', 49320, 14368),
array('2018-04-09 04:25:00', 52658, 14368),
array('2018-04-10 14:25:03', 11535, 14368),
array('2018-04-13 14:25:10', 22635, 14368),
array('2018-04-01 14:25:30', 55558, 14368), ); foreach ($arr_times as $items) {
$arr_keys[] = strtotime($items[0]);
} array_multisort($arr_keys, SORT_ASC, SORT_NUMERIC, $arr_times); var_dump($arr_times);
结果:

PHP的一个牛逼的数组排序函数array_multisort的更多相关文章
- 【项目总结】:怎样做一个牛逼的Team leader?
		随着ITOO高校云平台3.1项目的结束,我们各种各样的总结也被提上了日程. Java版本号的全部开发者和Donet版本号的全部开发者坐在一起进行了关于项目开发管理的头脑风暴,尽管我仅仅是Donet开发 ... 
- 如何设计一个牛逼的API接口
		在日常开发中,总会接触到各种接口.前后端数据传输接口,第三方业务平台接口.一个平台的前后端数据传输接口一般都会在内网环境下通信,而且会使用安全框架,所以安全性可以得到很好的保护.这篇文章重点讨论一下提 ... 
- csvkit---python一个牛逼到不行的csv处理库
		先吐槽一下:不管是百度还是谷歌,查来查去除了官方文档之外就没有任何可以借鉴的例子,虽然官方文档写的挺好的.但是我一直以为是在python语言的方式运行的,结果是以命令行的方式运行的,搞得我还以为这个库 ... 
- 如何成为一个牛逼的C/C++程序员?
		这个题目的噱头太大,要真的写起来, 足够写一本书了. 本人是过来人, 结合自身的体会和大家交流一下,希望新人能少走弯路. 每个人的情况不一样,我下面的描述可能并不适合每一个看到这篇文章的人. 一.C/ ... 
- 《转》如何成为一个牛逼的C/C++程序员?
		原地址:http://blog.csdn.net/langeldep/article/details/6333562 这个题目的噱头太大,要真的写起来, 足够写一本书了. 本人是过来人, 结合自身的体 ... 
- 教你做一个牛逼的DBA(在大数据下)
		一.基本概念 大数据量下,搞mysql,以下概念需要先达成一致 1)单库,不多说了,就是一个库 2)分片(sharding),水平拆分,用于解决扩展性问题,按天拆分表 3)复制(replication ... 
- 一个牛逼的 Python 调试工具PySnooper
		原文转自:https://mp.weixin.qq.com/s/OtLr-cNethboMgmCcUx2pA PySnooper 使用起来十分简单,开发者可以在任何庞大的代码库中使用它,而无需进行任何 ... 
- 一个牛逼的FTP——Wring Ftp
		背景:总公司内网有一部分文档需要共享,想要一个能便捷管理的文档系统 需求:分帐号授权,有的帐号只能看,有的帐号只能新增,有的帐号可以增删改查,另外可以便捷的对帐号进行管理 方法: 一.Wing Ftp ... 
- 分享一个牛逼的PHP无限极分类生成树方法,巧用引用(转)
		你还在用浪费时间又浪费内存的递归遍历无限极分类吗,看了该篇文章,我觉得你应该换换了.这是我在OSChina上看到的一段非常精简的PHP无限极分类生成树方法,巧在引用,整理分享了. function g ... 
随机推荐
- ReentrantReadWriteLock源码分析(一)
			此处源码分析,主要是基于读锁,非公平机制,JDK1.8. 问题: 1.ReentrantReadWriteLock是如何创建读锁与写锁? 2.读锁与写锁的区别是什么? 3.锁的重入次数与获取锁的线程数 ... 
- linux下安装mysql-5.7.20
			1.下载地址 https://downloads.mysql.com/archives/community/ 2.安装步骤 解压: groupadd mysql useradd -r -g mysql ... 
- 剑指offer四十七之求1+2+3+...+n
			一.题目 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 二.思路 1.需利用逻辑与的短路特性实现递归终 ... 
- Windows10下搭建TensorFlow环境
			转载请注明源出处:http://www.cnblogs.com/lighten/p/6753695.html 这篇文章介绍了一下在Windows上安装TensorFlow的步骤,主要是翻译了一下官方的 ... 
- 【优化】如何检测移动端 CPU 以及内存占用率
			原文 http://taobaofed.org/blog/2015/12/04/cpu-allocation-profiler/ 前言 6 月底的时候淘宝众筹的 H5 接入到了支付宝钱包,上线前支付 ... 
- 谈谈hadoop集群启动时进程那回事
			不多说,直接上干货! ==================> 1. 启动./start-dfs.sh的顺序是: namenode,datanode,secondarynamenode. 每一个前 ... 
- 使用exe4j将java项目打成exe执行程序
			最近用Java写了一个小工具,想将它达成exe执行文件,到时候直接放某个目录下,一执行就能跑啦. 用到的工具: 1.写好的项目:可以是java项目,也可以是java web项目 2.能够打jar的工具 ... 
- node服务端搭建学习笔记
			咳咳,终于迈出这一步了...这篇文章将是边学边写的真正笔记...用于mark下学习过程中的点滴~ 开篇先把我学习参考的文章来源给出,以表示对前人的尊敬: https://github.com/nswb ... 
- java主线程结束和子线程结束之间的关系
			(一)Main线程是个非守护线程,不能设置成守护线程. 这是因为,main线程是由java虚拟机在启动的时候创建的.main方法开始执行的时候,主线程已经创建好并在运行了.对于运行中的线程,调用Thr ... 
- Go 单元测试、基准测试、并发基准测试
			一.单元测试 要开始一个单元测试,需要准备一个 go 源码文件,在命名文件时需要让文件必须以_test结尾. 单元测试源码文件可以由多个测试用例组成,每个测试用例函数需要以Test为前缀,例如: fu ... 
