首页 > 解决方案 > laravel 数组 groupBy 特定列值

问题描述

我正在使用 laravel 中的数组,结果如下:

   $datesArr = [ {
        "day": "monday",
        "date": "2021-05-03"
    },
    {
        "day": "monday",
        "date": "2021-05-10"
    },
    {
        "day": "monday",
        "date": "2021-05-17"
    }
]

我想要的是这个:

   {
    "day": "monday",
    "dates" : [
       {"date": "2021-05-03"},
       {"date": "2021-05-10"},
       {"date": "2021-05-17"},
     ]
    }

标签: arrayslaravellaravel-collection

解决方案


希望对您有所帮助(应全部转换为数组)

public static function  buildArrayGroupBy($key, $data , $lockKey = null) {
    $result = array();
    foreach($data as $val) {
        if(array_key_exists($key, $val)){
            if(!is_null($lockKey)){
                $result[$val[$key]][] = $val[$lockKey];
            }else{
                $result[$val[$key]][] = $val;
            }

        }else{
            $result[""][] = $val;
        }
    }
    return $result;
}

推荐阅读