Laravel按键排序

时间:2018-08-23 19:20:51

标签: 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);

所以我得到这样的数据:

enter image description here

SO键是小时(00-23)。

如何安排从00、01、02、03 ... ...

开始

2 个答案:

答案 0 :(得分:2)

https://laravel.com/docs/5.6/collections#method-sortkeys

$collection = collect([
    'id' => 22345,
    'first' => 'John',
    'last' => 'Doe',
]);

$sorted = $collection->sortKeys();

更新为5.1

由于您使用的是Laravel 5.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');
});

答案 1 :(得分:0)

尝试此代码。

$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);