{foreach},{foreachelse}Attribute NameTypeRequiredDefaultDescriptionfromarrayYesn/aThe array you are looping throughitemstringYesn/aThe name of the variable that is the current
elementkeystringNon/aThe name of the variable that is the current keynamestringNon/aThe name of the foreach loop for accessing
foreach properties{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.
{foreach} - item
assign('custid', $arr);
?>
]]>
{/foreach}
]]>
The above example will output:
id: 1001
id: 1002
]]>
{foreach} - item and key
assign('contacts', array(
array('phone' => '1',
'fax' => '2',
'cell' => '3'),
array('phone' => '555-4444',
'fax' => '555-3333',
'cell' => '760-1234')
));
?>
]]>
{foreach key=key item=item from=$contact}
{$key}: {$item}
{/foreach}
{/foreach}
]]>
The above example will output:
phone: 1
fax: 2
cell: 3
phone: 555-4444
fax: 555-3333
cell: 760-1234
]]>
{foreach} - database example (eg PEAR or ADODB)
assign("contacts", $db->getAssoc($sql));
?>
]]>
{$con.name} - {$con.nick}
{/foreach}
]]>
{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
iteration is used to display the current loop iteration.Iteration always
starts with 1 and is incremented by one on each iteration.
firstfirst is set to true if the current foreach iteration is the first
one.
lastlast is set to true if the current foreach iteration is the last
one.
showshow 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.
totaltotal 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.