这是我从Google日历中显示的用于显示活动的多维数组。
Array
(
[items] => Array
(
[0] => Array
(
[status] => confirmed
[summary] => Let's go swimming!
[start] => Array
(
[dateTime] => 2011-12-30T09:00:00-05:00
)
[end] => Array
(
[dateTime] => 2011-12-30T10:00:00-05:00
)
)
[1] => Array
(
[status] => confirmed
[summary] => red wine
[start] => Array
(
[dateTime] => 2011-12-28T06:00:00-05:00
)
[end] => Array
(
[dateTime] => 2011-12-28T07:00:00-05:00
)
)
[2] => Array
(
[status] => confirmed
[summary] => Christmas
[start] => Array
(
[dateTime] => 2011-12-28T09:30:00-05:00
)
[end] => Array
(
[dateTime] => 2011-12-28T10:30:00-05:00
)
)
)
)
我想用PHP按end [datetime]排序。如果有人能给我一些帮助,我会非常感激。我想知道该怎么做。
答案 0 :(得分:9)
usort($array['items'], function($a, $b){
if ($a['end']['dateTime'] === $b['end']['dateTime']) return 0;
else return ($a['end']['dateTime'] > $b['end']['dateTime']) ? -1 : 1;
});
usort();
在这种特殊情况下,您可以将日期作为字符串进行比较,并根据格式获得正确的答案。在其他一些情况下,您可能需要其他方法,例如转换为unix时间戳并进行比较。
答案 1 :(得分:0)
AFAIK没有直接的方法。我通常会做类似
的事情$items=array();
foreach($mainarray['items'] as $k=>$v) $items[$v['end']['$dateTime'."-$k"]]=$v;
ksort($items);
$mainarray['items']=array_values($items);