rrylee
9/5/2016 - 5:20 AM

collection macro chunkInto

collection macro chunkInto

Collection::macro('chunkInto', function ($slices) {
    $slices = max(min($slices, $this->count()), 1);

    if ($slices == 1) {
        return collect([$this]);
    }

    $take = round($this->count() / $slices);

    return collect([$this->take($take)])
        ->merge($this->slice($take)->values()->chunkInto($slices - 1));
});