Agrupe uma coleção por X

Digamos, por exemplo, que você esteja trabalhando em um modelo Drupal onde deseja criar um controle deslizante agrupado para uma coleção de imagens. Aqui está um snippet PHP útil. Perdoe o pseudo código.

foreach( $images as $index => $image) :
$i
= $index +1;

// close container
if( $i !== 1 && $i % 3 === 1) echo '</div>';

// open container
if( $i % 3 === 0) echo '<div>';

// display image
echo
'<img src="' . $image->url . '" />';
endforeach
;

// always close container
echo
'</div>';

Isso é muito mais fácil em Ruby, onde existe um método fornecido pela classe Array. http://apidock.com/rails/Array/in_groups_of

%w{ foo bar baz fizz buzz }.in_groups_of(3, false)
#> ['foo','bar','baz']
#> ['fizz','buzz']