2013-08-20 48 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月,忽略!对不起,我是个白痴。 –