Another loop that iterates through an array or object and passes the element index and value to the template variables. Like in PHP, it takes three parameters:
Table 2.11. Foreach: parameters
| Name | Type | Required? | Description |
|---|---|---|---|
| table | Expression | Yes | The array or object we want to iterate through. |
| index | ID | Yes | Index variable name. |
| value | ID | Yes | Value variable name. |
| separator | Expression | No | A separator inserted between two section elements. The parameter can be replaced with the separator instruction. The parameter is available since OPT 1.1.3. |
Example 2.59. Foreach and arrays
{@array is array(
'Name' => 'John',
'Surname' => 'Smith',
'Age' => 31
)}
<table>
{foreach=@array; title; value}
<tr>
<td>{@title}</td>
<td><input type="text" name="{@title}" value="{@value}"/></td>
</tr>
{/foreach}
</table>This instruction can be used with separators.
OPT variant of foreach supports also {foreachelse} block. Its content is presented, if the parsed array/object contains no elements:
Example 2.60. Foreachelse
<table>
{foreach=$array; title; value}
<tr>
<td>{@title}</td>
<td><input type="text" name="{@title}" value="{@value}"/></td>
</tr>
{foreachelse}
<tr>
<td colspan="2">Please specify the form data!</td>
</tr>
{/foreach}
</table>