2013-08-20 2 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 
) 

Джек

UPDATE - Я идиот!

Извините, все, я только что осознал 2012-е годы в датах !!!! Argh. Поэтому проблема в другом месте моего скрипта. Я думал, что все они были в 2013 году, в августе. Игнорировать! Извини, я идиот.

+7

'sort()' должен делать это просто отлично в этом случае. Ты пробовал? – deceze

+0

Согласовано с @deceze, простое 'sort()' все, что должно быть необходимо. –

+0

Если часовой пояс во всех случаях одинаковый (его здесь нет), вы можете просто использовать 'sort()'. И если у вас на самом деле нет установленного времени, это все равно будет работать. Если у вас были разные времена, связанные с каждой из этих дат, однако, 'sort()' не был бы идеальным методом (вам нужно было бы преобразовать каждую дату в тот же часовой пояс, прежде чем сортировать в этом случае). – Crontab

ответ

1

Простой способ sort() выполнит эту работу, вам просто нужно правильно использовать sort() на неупорядоченных данных.

<?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 году, в августе. Игнорировать! Извини, я идиот. –

Смежные вопросы