有没有办法可以将以下数组按正确的时间顺序排序?
[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>
非常感谢!
答案 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)
使用usort功能。 http://php.net/manual/en/function.usort.php