簡體   English   中英

如何在php中按時間順序對數組進行排序?

[英]How can I sort this array chronologically in php?

我有一個日期數組,看起來像這樣:

  $array = array(
     "20140101000000" => "January 2014",
     "20140201000000" => "February 2014",
     "20140301000000" => "Mars 2014",
     "20130401000000" => "April 2013", // 2013 starts here
     "20130501000000" => "May 2013",
     "20130601000000" => "June 2013",
     "20130701000000" => "July 2013",
     "20130801000000" => "August 2013",
     "20130901000000" => "September 2013",
     "20131001000000" => "October 2013",
     "20131101000000" => "November 2013",
     "20131201000000" => "December 2013",
  );

我想按時間順序對它進行降序排序,而我對如何實現這一目標一無所知。 此數組的內容是從當前月份開始的12個月,並且時間倒退。 另外,該數組是通過API接收的,因此我無法控制輸出。

基本上我希望它以這種格式排序:

Mars 2014, 
February 2014, 
January 2014, 
December 2013
April 2013

鍵與值相關,並且易於排序,因此應該可以:

krsort($array);

由於鍵是數字值,因此您可以簡單地使用ksort - http: ksort

ksort($array);
var_dump($array);

krsort正好相反- http://www.php.net/manual/en/function.krsort.php

首先,您的陣列存在問題,大多數項目共享密鑰。 因此,一旦評估,該數組將是

$array = array( 
      "20140301000000" => "Mars 2014",
      "20130301000000" => "December 2013"
);

這將無濟於事。 每個項目必須具有唯一的密鑰。

如果僅查看數組的值,則假定:

$array = array(
 "January 2014",
 "February 2014",
 "Mars 2014",
 "April 2013", // 2013 starts here
 "May 2013",
 "June 2013",
 "July 2013",
 "August 2013",
 "September 2013",
 "October 2013",
 "November 2013",
 "December 2013",
);

然后,您可以使用用戶定義的排序例程,例如

function cmp($a, $b)
{
    if (strtotime($a) == strtotime($b)) {
        return 0;
    }
    return (strtotime($a) > strtotime($b)) ? -1 : 1;

}

usort($array, "cmp");

有關usort的詳細信息,請參見http://uk1.php.net/manual/zh/function.usort.php

另外,如果您的密鑰是與日期相對應的唯一時間戳,則可以使用krsort。

krsort($array)

暫無
暫無

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

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