使用laravel集合对月份进行排序

时间:2018-09-10 09:00:53

标签: php laravel sorting collections closures

我的数组是

$array = [
 1 => 0
 2 => 0
 3 => 0
 4 => 0
 5 => 0
 6 => 0
 7 => 2
 8 => 0
 9 => 0
 10 => 1
 11 => 0
 12 => 1
];

因此,我希望它成为

$array = [
 10 => 1
 11 => 0
 12 => 1
 1 => 0
 2 => 0
 3 => 0
 4 => 0
 5 => 0
 6 => 0
 7 => 2
 8 => 0
 9 => 0
];

我现在的逻辑是

$sorted = collect($array)
  ->sortBy(function ($count, $month) {
    return $month <= 9;
  });

但是结果不是我所期望的:(

基本上我希望上一个索引是当前月份,依此类推。

请帮助我!

2 个答案:

答案 0 :(得分:1)

您可以这样做:

$sorted = collect($array)->sortBy(function ($count, $month) {
    $currentMonth = (int) \Carbon\Carbon::now()->month;

    return ($month + (12 - $currentMonth - 1)) % 12;
});

答案 1 :(得分:0)

您可以使用php形式的功能

  

krsort();

krsort可以根据键以降序对关联数组进行排序。所以

ksort($array);