2

私の質問は次のとおりです。mysqlテーブル:イベントがあり、特別な形式のjson_stringを取得したいと思います。

    id   event
    1    2010-01-01 00:00:00 
    2    2010-07-02 00:00:00 
    3    2011-01-04 00:00:00 
    4    2012-01-30 00:00:00 
    5    2012-03-15 00:00:00 
...

json文字列を取得する必要があります:

{"events":[
   {"2010":
      {
       "1":{"id":1,"event":2010-01-01 00:00:00},
       "7":{"id":2,"event":2010-07-02 00:00:00}
      },
   },
   {"2011:
      {
       "1":{"id":3,"event":2012-01-30 00:00:00}
      },
   },
   {"2012:
      {
       "1":{"id":4,"event":2011-01-04 00:00:00},
       "3":{"id":5,"event":2012-03-15 00:00:00},
      },
   }
]}

以下の私のコード:

$result = DB::query('SELECT id, event FROM events');
 $events = array();
 while($event = $result->fetch_object()) {
     // the following statement won't get desired results
     $events[] = $event;
 }

 return array(
    'events' => json_encode($events);
 ); 

上記のJSON文字列を取得するようにコードを変更するにはどうすればよいですか?

4

1 に答える 1

1

イベントの日付から必要な部分だけsubstr()を使用して、多次元配列を作成します。

while($event = $result->fetch_object()) {
    $year = substr($event->event, 0, 4);
    $month = (int)substr($event->event, 5, 2);

    $events[$year][$month][] = $event;
}
于 2012-05-30T10:09:02.993 に答える