сортировка по значению в многомерном массиве - PullRequest
3 голосов
/ 28 декабря 2011

Это многомерный массив, который я получил из Календаря 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 для сортировки до конца [datetime].Если бы кто-нибудь мог мне помочь, я был бы очень благодаренМне было интересно, как это сделать.

Ответы [ 2 ]

9 голосов
/ 28 декабря 2011
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 и сравнение их.

0 голосов
/ 28 декабря 2011

AFAIK, прямого пути к этому нет.Я обычно делаю что-то вроде

$items=array();
foreach($mainarray['items'] as $k=>$v) $items[$v['end']['$dateTime'."-$k"]]=$v;
ksort($items);
$mainarray['items']=array_values($items);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...