Php PDO选择并显示具有相同日期的数据数组
我做了这个代码。显示基于相同日期(天)的数据的步骤 我从查询sql得到了什么结果Php PDO选择并显示具有相同日期的数据数组,php,arrays,group-by,Php,Arrays,Group By,我做了这个代码。显示基于相同日期(天)的数据的步骤 我从查询sql得到了什么结果 array ( [0] => Array ( [type] => date [date] => Dec 18th, 2019 [0] => Array ( [id
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
)
)
结果将变成一个数组,类似于按日期分组(day)的数组
如何得到这个结果?
谢谢您的帮助。您需要将
$group\u 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;
}
$group\u date
的目的是什么?它总是一个空字符串。我认为这就是按日期(天)对数据进行分组。你能告诉我如何获得正确的结果吗?你已经在用groupbydateadded
实现了这一点。每个日期只有一行。如果您发布从查询中获得的确切输出,那将非常棒。与空字符串进行比较会如何导致数据分组?那应该是前一行的日期吗?谢谢,现在可以了。但是您应该将此“$result[]=res;”更改为“$result[]=res;”
$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;
}