{foreach} loops are an alternative to {section} loops. {foreach} is used to loop over a single associative array. The syntax for {foreach} is much easier than {section}, but as a tradeoff it can only be used for a single array. {foreach} tags must be paired with {/foreach} tags. Required parameters are from and item. The name of the {foreach} loop can be anything you like, made up of letters, numbers and underscores. {foreach} loops can be nested, and the nested {foreach} names must be unique from each other. The from variable (usually an array of values) determines the number of times {foreach} will loop. {foreachelse} is executed when there are no values in the from variable.
Attribute Name | Type | Required | Default | Description |
---|---|---|---|---|
from | array | Yes | n/a | The array you are looping through |
item | string | Yes | n/a | The name of the variable that is the current element |
key | string | No | n/a | The name of the variable that is the current key |
name | string | No | n/a | The name of the foreach loop for accessing foreach properties |
Example 7-6. {foreach} - item and key
The above example will output:
|
Example 7-7. {foreach} - database example (eg PEAR or ADODB)
|
{foreach} loops also have their own variables that handle {foreach} properties. These are indicated like so: {$smarty.foreach.foreachname.varname} with foreachname being the name specified as the name attribute of foreach
See {section} for examples of the properties below as they are identical
iteration is used to display the current loop iteration.Iteration always starts with 1 and is incremented by one on each iteration.
show is used as a parameter to foreach. show is a boolean value, true or false. If false, the foreach will not be displayed. If there is a foreachelse present, that will be alternately displayed.
total is used to display the number of iterations that this foreach will loop. This can be used inside or after the foreach.
See also {section} and $smarty.foreach.