2013-08-20 47 views
-4

排序很簡單的日期的排列,我發現其他人問這個問題,但似乎沒有明確的解決這類問題。如何在PHP

我有一個非常簡單的,我想通過之日起重新安排的日期排列。日期格式適用於.ics,我相信PHP可以在不需要轉換的情況下解釋。

任何幫助非常感謝!

Array 
(
    [0] => 20120822T090000Z 
    [1] => 20120823T090000Z 
    [2] => 20120824T090000Z 
    [3] => 20120825T090000Z 
    [4] => 20120826T090000Z 
    [5] => 20120827T090000Z 
    [6] => 20120828T090000Z 
    [7] => 20120829T090000Z 
    [8] => 20120830T090000Z 
    [9] => 20120831T090000Z 
    [10] => 20130820T090000 
    [11] => 20130821T110000Z 
) 

傑克

更新 - 我是個白癡!

對不起,大家好,我剛剛意識到在日的2012S !!!!哎呀。所以問題在我的腳本的其他地方。我認爲他們都是2013年8月。忽視!對不起,我是個白癡。

+7

'sort()'應該在這種情況下做得很好。你有沒有嘗試過? – deceze

+0

同意@deceze一個簡單的'排序()'是所有應符合規定。 –

+0

如果時區是在任何情況下(這是不是在這裏)一樣,你可以只使用'排序()'。如果你實際上沒有時間設定,那仍然有效。但是,如果每個日期都有不同的時間,'sort()'不是一個理想的方法(在這種情況下,排序前你必須將每個日期轉換爲相同的時區)。 – Crontab

回答

1

一個簡單的排序()將做的工作,你只需要對無序的數據排序()正確使用。

<?php 

    // Deliberately moved out of order 
    $dates[] = "20120827T090000Z"; 
    $dates[] = "20120822T090000Z"; 
    $dates[] = "20120829T090000Z"; 
    $dates[] = "20120823T090000Z"; 
    $dates[] = "20130820T090000"; 
    $dates[] = "20120824T090000Z"; 
    $dates[] = "20120825T090000Z"; 
    $dates[] = "20120826T090000Z"; 
    $dates[] = "20120828T090000Z"; 
    $dates[] = "20120830T090000Z"; 
    $dates[] = "20120831T090000Z"; 
    $dates[] = "20130821T110000Z"; 

    // Here they are out of order 
    var_dump($dates); 

    sort($dates); 

    // now they are in order 
    var_dump($dates); 
?> 
+0

謝謝,但現在我真的很困惑。這只是不適合我... :( –

+0

它工作正常見http://phpfiddle.org/main/code/nv8-a87。也許你需要定義什麼不工作意味着什麼,你的實際代碼是什麼而不是僅僅顯示一個var_dump – Anigel

+3

OH JEESE!對不起,大家,我剛剛意識到2012年的日期!!!! Argh。所以這個問題在我的劇本的其他地方,我認爲他們都是2013年8月,忽略!對不起,我是個白癡。 –