After running into a need for a max iteration count on a foreach block tonight and seeing that several others have had the need during the years, I’ve created a simple patch to add max= as an attribute to the foreach block. I tried to search the archives for a reason why this hadn’t already been included, so feel free to ignore this patch if there are proper reasons why this isn’t available as an argument. There are cases where a simple break in the loop is more efficient than making a copy with array_slice if you need the same data several places but in different slice sizes.
The patch also contains three tests to test the max attribute.
The patch is available here: smarty.foreach.max.patch. The patch is against the current SVN trunk of 2010-08-08.
Example:
{foreach item=x from=[0,1,2,3,4,5,6,7,8,9] max=5}{$x}{/foreach}
Output:
01234