zoukankan      html  css  js  c++  java
  • 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);

    结果:

     

  • 相关阅读:
    GIS开发 坐标系问题
    IE不支持option的display样式,只能使用remove和add【转】
    使用jQuery解决IE不支持的option disable属性【转】
    mount 时遇到connection unfused 错误操作
    调试onvif 用到的一些工具。。linux 命令!
    jQuery实现删除option控件下的元素
    去掉input 输入框的边框
    Json文件读取
    JQuery 改指定的内容 设置隐藏内容为可见
    Ubuntu 下静态IP修改
  • 原文地址:https://www.cnblogs.com/zjfblog/p/8821064.html
Copyright © 2011-2022 走看看