Сортировать массив месяцев с коллекцией Laravel - PullRequest
0 голосов
/ 10 сентября 2018

Мой массив

$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 голосов
/ 10 сентября 2018

Вы можете функционировать с php, что

krsort (); * +1004 *

krsort может сортировать ассоциативные массивы в порядке убывания в соответствии с ключом. Так

ksort($array);
0 голосов
/ 10 сентября 2018

Вы можете сделать это так:

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

    return ($month + (12 - $currentMonth - 1)) % 12;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...