簡體   English   中英

PHP:按日期對多維數組進行排序

[英]PHP: Sort multi-dimensional array by date

我有一個看起來像這樣的數組:

Array (
       [0] => 
          Array ( 
                   [2014-05-31] => value1
                ) 

       [1] => 
          Array ( 
                   [2014-04-17] => value2
                ) 

       [2] => 
         Array ( 
                   [2014-04-21] => value3
               )
    )

....等等....

我想按日期從高到低(或從最低到最高-哪個都不重要)對整個數組進行排序。 我已經研究過ksort,但是我只能讓它根據已經正確排序的索引( [0], [1], [2] )對數組進行排序。 我想要的是這樣的:

Array (
       [1] => 
          Array ( 
                   [2014-04-17] => value2
                ) 

       [2] => 
         Array ( 
                   [2014-04-21] => value3
               )

       [0] => 
          Array ( 
                   [2014-05-31] => value1
                ) 

    )

在上面的示例中,我們從最早的日期到最新的日期對其進行了排序。 我該如何實現?

usort(
    $array,
    function($a, $b) {
        return strcmp(key($a), key($b));
    }
);

您可以將usort用於用戶定義的比較。
嘗試這個 -

$arr = Array (
          Array( 
                   "2014-05-31" => "value1"
                ),
          Array ( 
                   "2014-04-17" => "value2"
                ),
         Array ( 
                   "2014-04-21" => "value 3"
               )
    );
$res = usort($arr, function($a, $b){
    $par1 = key($a);
    $par2 = key($b);
    if ($par1 == $par2) {
        return 0;
    }
    return ($par1 < $par2) ? -1 : 1;
});
var_dump($arr);
/*
    OUTPUT
    array
      0 => 
        array
          '2014-04-17' => string 'value2' (length=6)
      1 => 
        array
          '2014-04-21' => string 'value 3' (length=7)
      2 => 
        array
          '2014-05-31' => string 'value1' (length=6)
*/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM