Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MYSQL请求|按年份和月份分组日期_Php_Mysql_Json - Fatal编程技术网

Php MYSQL请求|按年份和月份分组日期

Php MYSQL请求|按年份和月份分组日期,php,mysql,json,Php,Mysql,Json,我的问题是: 我有一个mysql表:events,希望得到特殊格式的json_字符串 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":

我的问题是: 我有一个mysql表:events,希望得到特殊格式的json_字符串

    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字符串?

只需
substr()
从事件日期获取所需的部分,并使用这些部分构建多维数组:

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

    $events[$year][$month][] = $event;
}

更新后形成了一个问题:)@lanzz:不要认为在文章末尾暗示“我该怎么做?”太难了。如果所有的问题都像这样发布,我会很高兴的。@Quassnoi我不清楚提问者遇到了什么问题。这不是一个问题,这是他赋予我们的使命,我们是否应该选择接受它。@lanzz:“我需要获取json字符串”,下面的字符串对我来说非常清楚。@Quassnoi他没有解释他在生成所需输出方面的问题。他只是要求我们代替他做他的工作,你的代码只返回:{“events”:{“2012”:{“1”:{“id”:1,“event”:“2010-01-01 00:00:00”}}}}}@user889349,这将是一行的结果;您确定查询返回的结果足够多吗?是。我的查询没有限制。您的解决方案返回最后一行:{“events”:{“2012”:{“3”:{“id”:5,“event”:“2012-03-15 00:00:00”}}}}}}此代码返回所有行:$while($event=$result->fetch_object()){$year=substr($event->event,0,4);//$month=(int)substr($event->event->event,5,2);$events[$year][=$event;}但没有月份。哪里会有问题?谢谢