按日期排序二维数组

时间:2011-02-20 18:03:31

标签: php arrays sorting date-sorting

有没有办法可以将以下数组按正确的时间顺序排序?

[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 feed的数组就像这样来到我这里。

我想按时间顺序对数组进行排序(显然基于[日期]):产品1,产品5,产品3,产品4,产品2

为了能够按照实际的顺序显示最新产品(不是他们给我的奇怪顺序! - 顺便说一句,假产品名称,订单真的完全随机)< / p>

非常感谢!

3 个答案:

答案 0 :(得分:2)

使用usort:http://www.phpbuilder.com/manual/function.usort.php

您编写了一个比较函数,用于比较两个“元素”(在本例中为您的日期字符串),并为它们返回正确的顺序。

编辑:您可以使用strtotime:http://php.net/manual/en/function.strtotime.php将日期字符串转换为时间戳,然后返回结果时间戳的比较。

答案 1 :(得分:2)

您可以使用array_multisort根据 date 值的排序数组的顺序对原始数组进行排序:

$keyValues = array();
foreach ($arr as $item) {
    $keyValues[] = strtotime($item['date']);
}
sort($keyValues);
array_multisort($arr, $keyValues);

答案 2 :(得分:1)