zoukankan      html  css  js  c++  java
  • array_multisort array_merge 排序

    前段时间遇到一个排序问题,大致是这样的:
    $demo = array(
            0        =>        array(
                    'name'        => 'yangyanfei',
                    'sex'                => 'man',
                    'age'        => 22,                        
            ),
            1        => array(
                    'name'        => 'yangyanfei',
                    'sex'                => 'man',
                    'age'        => 25,                        
            ),
            2        => array(
                    'name'        => 'yangyanfei',
                    'sex'                => 'man',
                    'age'        => 26,                        
            ),
    )
    //现在我们有这样一个需求,需要根据内层数组的age从大到小或者从小到大排序......
    这个东西,跟我的第一反应,自己做排序吧,各种排序算法~~
    突然想翻翻手册里面是否有这样的方法,为你提供好的内置方法~~
    结果还真有这样的方法,就是array_multisort啦~~
    想深研究的童鞋们可以去看看手册哦~
    $tempArr = array(); //用户排序的临时数组
    foreach($demo as $k=>$v){
            $tempArr[$k] = $v['age'];
    }
    array_multisort($tempArr,SORT_DESC,$demo); //第二个参数传排序规则
    这里$demo即按照age已经从大到小排好了,说下啦~此函数会直接影响$demo 无需重新赋值~~~
    像这样的业务很多吧,比如 我们一个数据列表,对内层数组的一个特定字段的值排序,又由于某些原因不符合你的业务需求,这时候那些底层helper又不能随便乱改,这个时候,可以考虑下这个内置方法 ~~~~~~

    最后给一个小提示~~
    array_merge这个家伙太坏了,如果你合并的索引式数组,小心点,它会把你的key干掉的,key会重新索引,这个时候 不妨试下 +
    比如 
    $arr = array(20=>'11',41=>'yang',12=>'yanfei');
    $arrNew = array(21=>'1asdf1',66=>'yang',14=>'yangyanfeiyangyanfei');
    $demo = array($arr,$arrNew); //这样的话,它会把你的数组key清除~~小心点~~~~
    这个时候你不妨试试  $demo = $arr + $arrNew; //单纯的把数组连接起来~~~不会清除键值对应关系~~~~~

    exit();

  • 相关阅读:
    ReportingService 通过RowNumber函数获取行号和生成隔行变色样式
    C#中Attribute的继承
    在ASP.NET非MVC环境中(WebForm中)构造MVC的URL参数,以及如何根据URL解析出匹配到MVC路由的Controller和Action
    _kbhit() for linux
    pthread_create用法(转)
    XACT Q&A (转)
    libcurl使用心得-包括下载文件不存在处理相关(转)
    2013总结-2014展望
    curl常用设置-涉及超时相关
    一行代码让App运行时iPhone不会进入锁屏待机状态
  • 原文地址:https://www.cnblogs.com/huangtaozi/p/3208238.html
Copyright © 2011-2022 走看看