Collection::chunk PHP Method

chunk() public method

Creates chunks of the same size The last chunk may be smaller
public chunk ( integer $size ) : object
$size integer Number of items per chunk
return object A new collection with an item for each chunk and a subcollection in each chunk
    public function chunk($size)
    {
        // create a multidimensional array that is chunked with the given chunk size
        // keep keys of the items
        $chunks = array_chunk($this->data, $size, true);
        // convert each subcollection to a collection object
        $chunkCollections = array();
        foreach ($chunks as $items) {
            // we clone $this instead of creating a new object because
            // different collections may have different constructors
            $collection = clone $this;
            $collection->data = $items;
            $chunkCollections[] = $collection;
        }
        // convert the array of chunks to a collection object
        return new Collection($chunkCollections);
    }

Usage Example

 public function testChunk()
 {
     /**
      * @var Collection[] $chunks
      */
     $chunks = $this->collection->chunk(2);
     $this->assertCount(2, $chunks);
     $this->assertEquals($this->_0, $chunks[0]->get(0));
     $this->assertEquals($this->_1, $chunks[0]->get(1));
     $this->assertEquals($this->_2, $chunks[1]->get(0));
     $this->assertEquals($this->_3, $chunks[1]->get(1));
 }