我已经编写了这段代码。显示基于同一日期(天(的数据
$group = array();
$stmt = $conn->prepare("
SELECT *,date(date_added) as dateadded
FROM rr
ORDER BY dateadded DESC
");
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
while ($res = $stmt->fetch()){
$rtype = array();
$rtype['type'] = "date";
$rtype['date'] = date_format (new DateTime($res['dateadded']), 'M jS, Y');
$rtype[] = $res;
$result[] = $rtype;
}
我从查询 sql 中得到的结果
array
(
[0] => Array
(
[type] => date
[date] => Dec 18th, 2019
[0] => Array
(
[id] => 1
[user_id] => 1
[status] => 1
[date_added] => 2019-12-18 13:44:30
[dateadded] => 2019-12-18
)
)
[1] => Array
(
[type] => date
[date] => Dec 20th, 2019
[0] => Array
(
[id] => 3
[user_id] => 2
[status] => 2
[date_added] => 2019-12-20 14:53:04
[dateadded] => 2019-12-20
)
)
[2] => Array
(
[type] => date
[date] => Dec 29th, 2019
[0] => Array
(
[id] => 5
[user_id] => 3
[status] => 0
[date_added] => 2019-12-29 00:39:21
[dateadded] => 2019-12-29
)
)
)
有些数据未在同一日期显示为结果。
我想展示的是这样的。
Array
(
[0] => Array
(
[type] => date
[date] => Dec 18th, 2019
)
[1] => Array
(
[id] => 2
[user_id] => 1
[status] => 1
[date_added] => 2019-12-18 13:44:30
)
[2] => Array
(
[type] => date
[date] => Dec 20th, 2019
)
[3] => Array
(
[id] => 1
[user_id] => 1
[status] => 0
[date_added] => 2019-12-20 14:53:04
)
[4] => Array
(
[id] => 3
[user_id] => 1
[status] => 0
[date_added] => 2019-12-20 14:53:04
)
)
结果变成了一个数组,就像按日期(天(分组一样。
如何获得此结果? 谢谢你帮助我。
您需要将$group_date
设置为$res['dateadded']
的值,以便知道日期何时更改。没有必要使用substr()
,因为dateadded
只包含日期而没有时间。
你应该把$res
推到$result
上,而不是$rtype
。
$group_date = "";
$group = array();
$stmt = $conn->prepare("
SELECT *,date(date_added) as dateadded
FROM rr
ORDER BY dateadded
");
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
while ($res = $stmt->fetch()){
$rtype = array();
if ($group_date !== $res["dateadded"]) {
$rtype['type'] = "date";
$rtype['date'] = date_format (new DateTime($res['dateadded']), 'M jS, Y');
$result[] = $rtype;
$group_date = $res["dateadded"];
}
$result[] = $res;
}