【发布时间】:2015-02-04 07:56:41
【问题描述】:
我正在考虑如何按具有相同值的对象对我的数组进行分组。
我从 MySQL 查询得到这个结果:
Date StartTime EndTime
2014-12-01 08:00 12:00
2014-12-01 10:00 16:00
2014-12-02 12:00 18:00
2014-12-03 10:00 20:00
我在一个名为 $Data 的 PHP 变量中保存了这些数据。
有没有可能用php: 得到这样的json数组?
[
{
"2014-12-01": [
{
"StartTime": "08:00",
"EndTime": "12:00"
},
{
"StartTime": "10:00",
"EndTime": "16:00"
}
]
},
{
"2014-12-02": [
{
"StartTime": "12:00",
"EndTime": "18:00"
}
]
},
{
"2014-12-03": [
{
"StartTime": "10:00",
"EndTime": "20:00"
}
]
}
]
如果我使用echo json_encode($Data),结果是:
[
{
"Date": "2014-12-01",
"StartTime": "10:00",
"EndTime": "16:00"
},
{
"Date": "2014-12-02",
"StartTime": "12:00",
"EndTime": "18:00"
},
{
"Date": "2014-12-03",
"StartTime": "10:00",
"EndTime": "20:00"
}
]
【问题讨论】:
-
当然可以。您在 PHP 代码中使用什么 MySQL API?对于大多数人来说,您必须在获取时构建数组,但 PDO 甚至提供了a
FETCH_GROUPoption tofetchAll(),它会产生这种结构(或多或少)。 -
我在一个名为
$Data的 php 变量中有 MySQL 的结果。 -
好的,但是
$Data的实际 PHP 内容是什么?请通过print_r($Data);显示它的有限示例,并将用于从 MySQL 获取行的 PHP 代码发布到$Data。 -
您发布所需结构的分组输出有点奇怪 - 一个外部对象数组,每个对象都包含一个属性(日期),它是一个对象数组。拥有一个带有键(日期)的外部对象会更有意义,每个对象都是一个对象数组。嵌套层数减少 2 个。
-
点赞
{"2014-12-01": [{"StartTime": "10:00", "EndTime":"16:00"},{"StartTime": "10:00","EndTime": "16:00"}],"2014-12-02":[{"StartTime":"12:00","EndTime":"18:00"}]