在以下情况下,我在日期分组数组元素时出错?

时间:2015-07-17 12:56:30

标签: php arrays associative-array key-value

我有一个标题为$all_event_details的数组如下:

Array
(
    [0] => Array
        (
            [group_name] => Student Organisation
            [event_id] => 239
            [start_time] => 1443546000
            [end_time] => 1443546000
        )

    [1] => Array
        (
            [group_name] => 
            [event_id] => 237
            [start_time] => 1443027600
        [end_time] => 1443027600
        )

    [2] => Array
        (
            [group_name] => TestGroupShweta
            [event_id] => 238
            [start_time] => 1440784200
            [end_time] => 1440784200
        )

    [3] => Array
        (
            [group_name] => 
            [event_id] => 201
            [start_time] => 1439596800
            [end_time] => 1439596800
        )

    [4] => Array
        (
            [group_name] => 
            [event_id] => 240
            [start_time] => 1439596800
            [end_time] => 1439596800
        )

    [5] => Array
        (
            [group_name] => 
            [event_id] => 241
            [start_time] => 1439596800
            [end_time] => 1439596800
        )

    [6] => Array
        (
            [group_name] => 
            [event_id] => 235
            [start_time] => 1437130800
            [end_time] => 1437134400
        )

)

现在我想将所有具有相同日期的数组元素分组(即从键'start_time'中提取的日期)。所以我做了以下代码来实现这一点。

$result = [];
foreach($all_event_details as $event) {
    $event['event_group_date'] = date('d M, l Y',$event['start_time']);
    $result[][] = $event;
}
print_r($result);
die;

但我得到以下数组作为输出错误(print_r($result);的输出)。

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [group_name] => Student Organisation
                    [start_time] => 1443546000
                    [end_time] => 1443546000
                    [event_group_date] => 30 Sep, Wednesday 2015
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [group_name] => 
                    [event_id] => 237
                    [start_time] => 1443027600
                    [end_time] => 1443027600
                    [event_group_date] => 24 Sep, Thursday 2015
                )

        )

    [2] => Array
        (
            [0] => Array
                (
                    [group_name] => TestGroupShweta
                    [event_id] => 238
                    [start_time] => 1440784200
                    [end_time] => 1440784200
                    [event_group_date] => 29 Aug, Saturday 2015
                )

        )

    [3] => Array
        (
            [0] => Array
                (
                    [group_name] => 
                    [event_id] => 201
                    [start_time] => 1439596800
                    [end_time] => 1439596800
                    [event_group_date] => 15 Aug, Saturday 2015
                )

        )

    [4] => Array
        (
            [0] => Array
                (
                    [group_name] => 
                    [event_id] => 240
                    [start_time] => 1439596800
                    [end_time] => 1439596800
                    [event_group_date] => 15 Aug, Saturday 2015
                )

        )

    [5] => Array
        (
            [0] => Array
                (
                    [group_name] => 
                    [event_id] => 241
                    [start_time] => 1439596800
                    [end_time] => 1439596800
                    [event_group_date] => 15 Aug, Saturday 2015
                )

        )

    [6] => Array
        (
            [0] => Array
                (
                    [group_name] => 
                    [event_id] => 235
                    [start_time] => 1437130800
                    [end_time] => 1437134400
                    [event_group_date] => 17 Jul, Friday 2015
                )

        )

)

但我希望遵循预期的数组输出。

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [group_name] => Student Organisation
                    [start_time] => 1443546000
                    [end_time] => 1443546000
                    [event_group_date] => 30 Sep, Wednesday 2015
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [group_name] => 
                    [event_id] => 237
                    [start_time] => 1443027600
                    [end_time] => 1443027600
                    [event_group_date] => 24 Sep, Thursday 2015
                )

        )

    [2] => Array
        (
            [0] => Array
                (
                    [group_name] => TestGroupShweta
                    [event_id] => 238
                    [start_time] => 1440784200
                    [end_time] => 1440784200
                    [event_group_date] => 29 Aug, Saturday 2015
                )

        )

    [3] => Array
        (
            [0] => Array
                (
                    [group_name] => 
                    [event_id] => 201
                    [start_time] => 1439596800
                    [end_time] => 1439596800
                    [event_group_date] => 15 Aug, Saturday 2015
                )
             [1] => Array
                (
                    [group_name] => 
                    [event_id] => 240
                    [start_time] => 1439596800
                    [end_time] => 1439596800
                    [event_group_date] => 15 Aug, Saturday 2015
                )
             [2] => Array
                (
                    [group_name] => 
                    [event_id] => 241
                    [start_time] => 1439596800
                    [end_time] => 1439596800
                    [event_group_date] => 15 Aug, Saturday 2015
                )
        )

    [4] => Array
        (
            [0] => Array
                (
                    [group_name] => 
                    [event_id] => 235
                    [start_time] => 1437130800
                    [end_time] => 1437134400
                    [event_group_date] => 17 Jul, Friday 2015
                )

        )

)

有人可以纠正我在我的代码中犯的错误,这样我就可以获得预期的数组输出。

1 个答案:

答案 0 :(得分:1)

试试这个:(目前无法验证)

<?php

$result = array();
foreach($all_event_details as $event) {
    $event['event_group_date'] = date('d M, l Y',$event['start_time']);
    $result[$event['event_group_date']][] = $event; //put $i in the index
}
$result = array_values($result);
print_r($result);
die;
?>