Arrays Laravel按键排序

Arrays Laravel按键排序,arrays,laravel,sorting,collections,laravel-5.1,Arrays,Laravel,Sorting,Collections,Laravel 5.1,我使用集合创建了一个数组,其中包含以下代码: $hours = Voucher::where('created_at','>=', Carbon::now()->startOfMonth())->get()->groupBy(function($item) { return $item->created_at->format('H'); }); dd($hours); 所以我得到的数据如下: 所以钥匙是小时(00-23) 我如何安排从00、01、02

我使用集合创建了一个数组,其中包含以下代码:

$hours = Voucher::where('created_at','>=', Carbon::now()->startOfMonth())->get()->groupBy(function($item)
{
  return $item->created_at->format('H');
});

dd($hours);
所以我得到的数据如下:

所以钥匙是小时(00-23)

我如何安排从00、01、02、03开始


5.1版本的更新

由于您使用的是Laravel5.1,并且没有sortKeys方法,因此可以在对集合进行分组之前对其进行排序,这将导致键的顺序正确

$collection->sort(function($a, $b) {
    return strcmp($a->created_at->format('H'), $b->created_at->format('H'));
})->groupBy(function($item) {
    return $item->created_at->format('H');
});
试试这个代码

$hours = Voucher::where('created_at','>=', Carbon::now()->startOfMonth())->get()->sortBy(function($item)
{
  return $item->created_at->format('H');
});
$hours = $hours->groupBy(function($item)
{
  return $item->created_at->format('H');
});
dd($hours);

我写了$hours=$hours->sortKeys()l,结果发现错误:Macroable.php第81行中的BadMethodCallException:方法sortKeys不存在-我使用的是Laravel 5.1,当您使用旧版本时,最好标记问题中的版本。@AleksPer,我为5.1添加了一个未经测试的更新。应该这样做吗?最好的方法是什么?我需要的是{hour:hour->count()}有更好的方法吗?一天只有24小时,只需在PHP中的集合上执行for循环,或在SQL中按小时分组。
$hours = Voucher::where('created_at','>=', Carbon::now()->startOfMonth())->get()->sortBy(function($item)
{
  return $item->created_at->format('H');
});
$hours = $hours->groupBy(function($item)
{
  return $item->created_at->format('H');
});
dd($hours);