Сортировка двумерного массива по дате - PullRequest
1 голос
/ 20 февраля 2011

Есть ли способ, как я могу отсортировать следующий массив в правильном хронологическом порядке?

[0] => Array
    (
        [date] => Sat, 12 Feb 2011 16:55:13 -0500
        [title] => Product 1
        [link] => http://blabla/product-1
    )

[1] => Array
    (
        [date] => Sat, 25 Sep 2010 17:52:24 -0400
        [title] => Product 2
        [link] => http://blabla/product-2
    )

[2] => Array
    (
        [date] => Sun, 05 Dec 2010 17:41:32 -0500
        [title] => Product 3
        [link] => http://blabla/product-3
    )

[3] => Array
    (
        [date] => Sun, 28 Nov 2010 09:14:39 -0500
        [title] => Product 4
        [link] => http://blabla/product-4
    )

[4] => Array
    (
        [date] => Tue, 07 Dec 2010 18:43:45 -0500
        [title] => Product 5
        [link] => http://blabla/product-5
    )

Массив из RSS-ленты приходит ко мне так.

Я бы хотел отсортировать массив в хронологическом порядке (очевидно, на основе [дата]): Продукт 1, Продукт 5, Продукт 3, Продукт 4, Продукт 2

Чтобы иметь возможность отображать последние продукты в реальном порядке (не в том странном порядке, который они мне дали! - кстати, поддельные названия продуктов, заказ действительно полностью случайный )

Большое спасибо!

Ответы [ 3 ]

2 голосов
/ 20 февраля 2011

Используйте usort: http://www.phpbuilder.com/manual/function.usort.php

Вы пишете функцию сравнения, которая сравнивает два «элемента» (в данном случае, строки даты) и возвращает правильный порядок для них.

Редактировать: вы можете использовать strtotime: http://php.net/manual/en/function.strtotime.php, чтобы преобразовать строку даты в метку времени и затем вернуть сравнение полученных меток времени.

2 голосов
/ 20 февраля 2011

Вы можете использовать array_multisort, чтобы упорядочить исходный массив в соответствии с порядком отсортированного массива date values:

$keyValues = array();
foreach ($arr as $item) {
    $keyValues[] = strtotime($item['date']);
}
sort($keyValues);
array_multisort($arr, $keyValues);
1 голос
/ 20 февраля 2011

Используйте функцию usort.http://php.net/manual/en/function.usort.php

...