Php 按天格式化多维数组数据

Php 按天格式化多维数组数据,php,laravel-5,multidimensional-array,Php,Laravel 5,Multidimensional Array,嗨,我有几天的数据响应,按天排序,如 Array ( [0] => stdClass Object ( [start_time] => 13:00:00 [end_time] => 13:20:00 [date] => 2020-08-30 [day] => sun ) [1] => stdClass Object

嗨,我有几天的数据响应,按天排序,如

Array
(
    [0] => stdClass Object
        (
            [start_time] => 13:00:00
            [end_time] => 13:20:00
            [date] => 2020-08-30
            [day] => sun
        )

    [1] => stdClass Object
        (
            [start_time] => 14:40:00
            [end_time] => 15:00:00
            [date] => 2020-08-30
            [day] => sun 
        )

    [2] => stdClass Object
        (
            [start_time] => 10:00:00
            [end_time] => 10:20:00
            [date] => 2020-08-30
            [day] => mon
        )

    [3] => stdClass Object
        (
            [start_time] => 16:00:00
            [end_time] => 16:20:00
            [date] => 2020-08-30
            [day] => mon
        )

    [4] => stdClass Object
        (
            [start_time] => 15:40:00
            [end_time] => 16:00:00
            [date] => 2020-08-30
            [day] => tue
        )

    [5] => stdClass Object
        (
            [start_time] => 15:20:00
            [end_time] => 15:40:00
            [date] => 2020-08-30
            [day] => tue
        )
)
我想在白天重新格式化数组,就像

Array
(
    [0] => stdClass Object
    (
        [sun] => stdClass Object
        (
            [start_time] => 13:00:00
            [end_time] => 13:20:00
            [date] => 2020-08-30
            [day] => sun
        )
    
        [mon] => stdClass Object
        (
            [start_time] => 10:00:00
            [end_time] => 10:20:00
            [date] => 2020-08-30
            [day] => mon
        )
        
        [tue] => stdClass Object
        (
            [start_time] => 15:40:00
            [end_time] => 16:00:00
            [date] => 2020-08-30
            [day] => tue
        )
    )
    
    [1] => stdClass Object
    (
        [sun] => stdClass Object
        (
            [start_time] => 14:40:00
            [end_time] => 15:00:00
            [date] => 2020-08-30
            [day] => sun 
        )
    
        [mon] => stdClass Object
        (
            [start_time] => 16:00:00
            [end_time] => 16:20:00
            [date] => 2020-08-30
            [day] => mon
        )
        
        [tue] => stdClass Object
        (
            [start_time] => 15:20:00
            [end_time] => 15:40:00
            [date] => 2020-08-30
            [day] => tue
        )
    )
)
为此,我的代码为

foreach ($data as $key => $value) {
    foreach ($week_days as $key1 => $v) {
        $i = 0;
        $response[$key][$v]['start_time'] = $value->start_time;
        $response[$key][$v]['end_time'] = $value->end_time;
        $response[$key][$v]['date'] = $value->date;
        $response[$key][$v]['day'] = $value->day;
        $response[$key][$v]['have_appointment'] = $value->have_appointment;
        $response[$key][$v]['patient_name'] = $value->patient_name;
        $response[$key][$v]['complain'] = $value->complain;
        $i++;
    }
}

但它似乎覆盖了数据&我无法找到我犯错误的地方

我不知道这种排序的逻辑原因,也不完全了解您的数据可能会有什么变化,但据我所知,您需要按天值对数据进行分组,然后转置结构,以确保最终输出中没有子数组两次具有相同的
day
属性

代码:()

我的输出在转置时丢失了冗余/临时分组键(
day
),我假设您不需要重复的值

array (
  0 => 
  array (
    0 => 
    (object) array(
       'start_time' => '13:00:00',
       'end_time' => '13:20:00',
       'date' => '2020-08-30',
       'day' => 'sun',
    ),
    1 => 
    (object) array(
       'start_time' => '10:00:00',
       'end_time' => '10:20:00',
       'date' => '2020-08-30',
       'day' => 'mon',
    ),
    2 => 
    (object) array(
       'start_time' => '15:40:00',
       'end_time' => '16:00:00',
       'date' => '2020-08-30',
       'day' => 'tue',
    ),
  ),
  1 => 
  array (
    0 => 
    (object) array(
       'start_time' => '14:40:00',
       'end_time' => '15:00:00',
       'date' => '2020-08-30',
       'day' => 'sun',
    ),
    1 => 
    (object) array(
       'start_time' => '16:00:00',
       'end_time' => '16:20:00',
       'date' => '2020-08-30',
       'day' => 'mon',
    ),
    2 => 
    (object) array(
       'start_time' => '15:20:00',
       'end_time' => '15:40:00',
       'date' => '2020-08-30',
       'day' => 'tue',
    ),
  ),
)

从逻辑上讲,为什么同一个日期适用于不同的日子?
30-08-2020
只是一个星期天。这个问题感觉不清楚。这是现实的吗?请始终将您的iterable数据表示为
var\u export()
或json字符串,以便志愿者可以立即使用您的示例数据。您的代码与您的数据不相似。
array (
  0 => 
  array (
    0 => 
    (object) array(
       'start_time' => '13:00:00',
       'end_time' => '13:20:00',
       'date' => '2020-08-30',
       'day' => 'sun',
    ),
    1 => 
    (object) array(
       'start_time' => '10:00:00',
       'end_time' => '10:20:00',
       'date' => '2020-08-30',
       'day' => 'mon',
    ),
    2 => 
    (object) array(
       'start_time' => '15:40:00',
       'end_time' => '16:00:00',
       'date' => '2020-08-30',
       'day' => 'tue',
    ),
  ),
  1 => 
  array (
    0 => 
    (object) array(
       'start_time' => '14:40:00',
       'end_time' => '15:00:00',
       'date' => '2020-08-30',
       'day' => 'sun',
    ),
    1 => 
    (object) array(
       'start_time' => '16:00:00',
       'end_time' => '16:20:00',
       'date' => '2020-08-30',
       'day' => 'mon',
    ),
    2 => 
    (object) array(
       'start_time' => '15:20:00',
       'end_time' => '15:40:00',
       'date' => '2020-08-30',
       'day' => 'tue',
    ),
  ),
)