函数详情,具体可参考 官方手册 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的更多相关文章

  1. 【项目总结】:怎样做一个牛逼的Team leader?

    随着ITOO高校云平台3.1项目的结束,我们各种各样的总结也被提上了日程. Java版本号的全部开发者和Donet版本号的全部开发者坐在一起进行了关于项目开发管理的头脑风暴,尽管我仅仅是Donet开发 ...

  2. 如何设计一个牛逼的API接口

    在日常开发中,总会接触到各种接口.前后端数据传输接口,第三方业务平台接口.一个平台的前后端数据传输接口一般都会在内网环境下通信,而且会使用安全框架,所以安全性可以得到很好的保护.这篇文章重点讨论一下提 ...

  3. csvkit---python一个牛逼到不行的csv处理库

    先吐槽一下:不管是百度还是谷歌,查来查去除了官方文档之外就没有任何可以借鉴的例子,虽然官方文档写的挺好的.但是我一直以为是在python语言的方式运行的,结果是以命令行的方式运行的,搞得我还以为这个库 ...

  4. 如何成为一个牛逼的C/C++程序员?

    这个题目的噱头太大,要真的写起来, 足够写一本书了. 本人是过来人, 结合自身的体会和大家交流一下,希望新人能少走弯路. 每个人的情况不一样,我下面的描述可能并不适合每一个看到这篇文章的人. 一.C/ ...

  5. 《转》如何成为一个牛逼的C/C++程序员?

    原地址:http://blog.csdn.net/langeldep/article/details/6333562 这个题目的噱头太大,要真的写起来, 足够写一本书了. 本人是过来人, 结合自身的体 ...

  6. 教你做一个牛逼的DBA(在大数据下)

    一.基本概念 大数据量下,搞mysql,以下概念需要先达成一致 1)单库,不多说了,就是一个库 2)分片(sharding),水平拆分,用于解决扩展性问题,按天拆分表 3)复制(replication ...

  7. 一个牛逼的 Python 调试工具PySnooper

    原文转自:https://mp.weixin.qq.com/s/OtLr-cNethboMgmCcUx2pA PySnooper 使用起来十分简单,开发者可以在任何庞大的代码库中使用它,而无需进行任何 ...

  8. 一个牛逼的FTP——Wring Ftp

    背景:总公司内网有一部分文档需要共享,想要一个能便捷管理的文档系统 需求:分帐号授权,有的帐号只能看,有的帐号只能新增,有的帐号可以增删改查,另外可以便捷的对帐号进行管理 方法: 一.Wing Ftp ...

  9. 分享一个牛逼的PHP无限极分类生成树方法,巧用引用(转)

    你还在用浪费时间又浪费内存的递归遍历无限极分类吗,看了该篇文章,我觉得你应该换换了.这是我在OSChina上看到的一段非常精简的PHP无限极分类生成树方法,巧在引用,整理分享了. function g ...

随机推荐

  1. Redis 的 Sentinel

    Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务: 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服 ...

  2. 初识PHP之php运行流程及原理(一)

    初识PHP一.用脚本命令行运行php(1)打开cmd.exe(winkey+R)(2)找到php.exe(拖进cmd即可)(3)输入命令php.exe -f "文件实际路径"注:运 ...

  3. 模仿 AppStore 顶部动画

    App Store 顶部动画 App Store 中 Games.Apps.Updates 的顶部动画的特点: 自然状态下是大标题,右边有一个 button 顶上去时,变成小标题,右边按钮消失 导航栏 ...

  4. Swift Podfile中的 use_frameworks!

    use_frameworks! A.用cocoapods 导入swift 框架 到 swift项目和OC项目都必须要 use_frameworks!B.使用 dynamic frameworks,必须 ...

  5. 微信小程序自定义弹窗wcPop插件|仿微信弹窗样式

    微信小程序自定义组件弹窗wcPop|小程序消息提示框|toast自定义模板弹窗 平时在开发小程序的时候,弹窗应用场景还是蛮广泛的,但是微信官方提供的弹窗比较有局限性,不能自定义修改.这个时候首先想到的 ...

  6. 使用Maven命令行快速创建项目骨架(archetype)

      > mvn archetype:generate 接下来就会输出一些列带索引变化的archetype项可供我们选择,然后提示我们选择一个编号,可以直接回车选择默认的编号(392),然后就跟着 ...

  7. linux中的tar命令的使用

    参考网址: https://www.cnblogs.com/newcaoguo/p/5896975.html https://www.cnblogs.com/xccjmpc/p/6035397.htm ...

  8. springboot-18-springboot的参数封装

    springboot的参数封装, 和springmvc相识 简单参数的封装 1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交. /** * ...

  9. import.html 页面导出execl

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. antlr提取代码注释

    1. 来由 为什么要写提取注释呢,起因是工作需要.弄这么个不太重要的功能点来讲,旨在抛砖引玉. 一般而言,大家使用antlr解析源代码的时候,不会关心注释和空格之类内容,默认会过滤掉,不会放到语法树里 ...