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();

  • 相关阅读:
    数据库优化之三:数据表设计
    JavaScript:实现弹出框的选择(转载)
    HTML and CSS 之三
    容祖儿 《Jump Up 9492》[MP3!]
    微软的 3层结构教程
    CodeSmith
    Alienwave.CommunityServer 开发笔记 1
    Microsoft .NET Framework 3.0 预发行版本 2006年6月CTP
    三国无双 4 PC 版释出
    KOKIA 《THE POWER OF SMILE》单曲[MP3!]
  • 原文地址:https://www.cnblogs.com/huangtaozi/p/3208238.html
Copyright © 2011-2022 走看看