Laravel сортировать массив по количеству элементов в подмассиве - PullRequest
0 голосов
/ 05 марта 2020

Есть ли у меня laravel метод сбора, о котором я не знаю, который позволил бы мне отсортировать массив по количеству элементов в подмассиве?

Illuminate\Support\Collection {#1143 ▼
  #items: array:7 [▼
    "A" => Illuminate\Support\Collection {#21181 ▼
      #items: array:10 [▶]
    }
    "B" => Illuminate\Support\Collection {#21182 ▼
      #items: array:8 [▶]
    }
    "C" => Illuminate\Support\Collection {#21183 ▼
      #items: array:9 [▶]
    }
    "D" => Illuminate\Support\Collection {#21184 ▼
      #items: array:5 [▶]
    }
    "E" => Illuminate\Support\Collection {#21185 ▼
      #items: array:2 [▶]
    }
    "F" => Illuminate\Support\Collection {#21186 ▼
      #items: array:4 [▶]
    }
    "G" => Illuminate\Support\Collection {#21187 ▼
      #items: array:15 [▶]
    }
  ]
}

Я мог бы сделать что-то вроде ЭТО с использованием usort(), но мне просто интересно, существует ли какой-либо метод в коллекциях laravel, о которых я пока не знаю или, возможно, я не могу найти его в Laravel коллекциях .

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

если вы ищете usort(), Laravel https://laravel.com/docs/5.8/collections#method -сортировка работают так же, как usort()

например:

 $full_sorted = $collection_data->sort(function($a ,$b) { //$a first element ,$b second element
                if ((count($a) > count($b))) {
                        return -1; 
                }else{
                   return 1;
                }
            })->values();
0 голосов
/ 05 марта 2020

Я не знаю, столкнется ли кто-нибудь с подобной проблемой, я нашел способ обойти это, как упомянуто в документации

Я до сих пор не знаю, если это идеальный способ сделать это, но это помогло мне. Я просто публикую это так, чтобы это могло помочь кому-то с большой головной болью и временем.

Я все еще хотел бы услышать другие ответы и комментарии об альтернативных способах сделать это.

$sorted = $mostWatchedVideosThisWeek->sortByDesc(function ($stats, $key) {
     return count($stats);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...