【问题标题】:Sort multidimensional array by second-level key按二级键对多维数组进行排序
【发布时间】:2012-10-12 18:39:19
【问题描述】:

我有一个如下所示的数组:

array(3) { 
    ["Fall Quarter 2012"]=> array(2) { 
          [20121018]=> array(1) { 
              ["agenda"]=> string(55) "Fall_2012/Agenda_20121018.pdf" 
          }
          [20121011]=> array(2) { 
              ["agenda"]=> string(55) "Fall_2012/Agenda_20121011.pdf" 
              ["minutes"]=> string(56) "Fall_2012/Minutes_20121011.pdf" 
          } 
    } 
    ["Spring Quarter 2012"]=> array(1) { 
          [20120413]=> array(1) { 
              ["agenda"]=> string(57) "SPRing_2012/Agenda_20120413.pdf" 
          } 
    } 
    ["Summer Quarter 2012"]=> array(1) { 
          [20120610]=> array(2) { 
              ["agenda"]=> string(57) "Summer_2012/Agenda_20120610.pdf" 
              ["minutes"]=> string(58) "Summer_2012/Minutes_20120610.pdf" 
          } 
    } 
 }

我想使用日期键对其进行排序,以便季度按正确的顺序排列秋季/夏季/春季。应该是这样的:

array(3) { 
    ["Fall Quarter 2012"]=> array(2) {
          [20121018]=> array(1) { 
              ["agenda"]=> string(55) "Fall_2012/Agenda_20121018.pdf" 
          }
          [20121011]=> array(2) { 
              ["agenda"]=> string(55) "Fall_2012/Agenda_20121011.pdf" 
              ["minutes"]=> string(56) "Fall_2012/Minutes_20121011.pdf" 
          } 
    }
    ["Summer Quarter 2012"]=> array(1) { 
          [20120610]=> array(2) { 
              ["agenda"]=> string(57) "Summer_2012/Agenda_20120610.pdf" 
              ["minutes"]=> string(58) "Summer_2012/Minutes_20120610.pdf" 
          } 
    } 
    ["Spring Quarter 2012"]=> array(1) { 
          [20120413]=> array(1) { 
              ["agenda"]=> string(57) "SPRing_2012/Agenda_20120413.pdf" 
          } 
    } 
 }

有没有办法通过使用日期排序来获得这个结果,或者我应该使用uksort() 函数按照我自己的模式对季度进行排序?

请告诉我你的想法!谢谢!

【问题讨论】:

    标签: php sorting multidimensional-array


    【解决方案1】:

    你应该使用 uasort 函数。您的代码可能如下所示:

    function myComparison($a, $b){
        return (key($a) > key($b)) ? -1 : 1;
    } 
    
    uasort ( $quarters , 'myComparison' );
    

    例如,这将使用$quarters["Fall Quarter 2012"]["20121018"] 进行排序

    【讨论】:

    • 谢谢!这很好,但我如何保留宿舍的名字?当我这样排序时,它会将我的钥匙(2012 年秋季/2012 年夏季/2012 年春季)变成(0/1/2)。它也应该是“>”而不是“
    • 并且还在比较函数中将<改为>
    猜你喜欢
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多