Php PDO选择并显示具有相同日期的数据数组

Php PDO选择并显示具有相同日期的数据数组,php,arrays,group-by,Php,Arrays,Group By,我做了这个代码。显示基于相同日期(天)的数据的步骤 我从查询sql得到了什么结果 array ( [0] => Array ( [type] => date [date] => Dec 18th, 2019 [0] => Array ( [id

我做了这个代码。显示基于相同日期(天)的数据的步骤

我从查询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
        )

)
结果将变成一个数组,类似于按日期分组(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;
}