{foreach},{foreachelse} Циклы {foreach} являются альтернативой циклам {section}. {foreach} используется для прохода по единственному ассоциативному массиву. Синтаксис {foreach} намного проще синтаксиса {section}, но с другой стороны его можно использовать только для одного массива. Каждый тэг {foreach} должен иметь пару {/foreach}. Обязательными параметрами являются from и item. Имя цикла {foreach} может быть любым, состоящим из букв, цифр и знаков подчеркивания. Циклы {foreach} могут быть вложенными и имена вложенных {foreach} должны быть уникакльными между собой. Параметр from (обычно - массив значений) определяет количество итераций цикла {foreach}. {foreachelse} выполняется в том случае, если параметр from не содержит значений. Имя атрибута Тип Обязателен По умолчанию Описание from array Да n/a Массив, по которому надо пройтись item string Да n/a Имя переменной, которая будет выступать в качестве значения текущего елемента key string Нет n/a Имя переменной, которая будет выступать в качестве ключа текущего елемента name string Нет n/a Название цикла foreach для доступа к его свойствам {foreach} - предмет assign('custid', $arr); ?> ]]> {/foreach} ]]> Результат выполнения данного примера: id: 1001
id: 1002
]]>
{foreach} - предмет и ключ 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}<br> {$key}: {$item}
{/foreach} {/foreach} ]]>
Результат выполнения данного примера: phone: 1
fax: 2
cell: 3

phone: 555-4444
fax: 555-3333
cell: 760-1234
]]>
{foreach} - базы данных (к примеру, PEAR или ADODB) assign("contacts", $db->getAssoc($sql)); ?> ]]> {$con.name} - {$con.nick}
{/foreach} ]]>
Циклы {foreach} также имеют собственные переменные, которые содержат свойства {foreach}. Они обозначаются так: {$smarty.foreach.foreachname.varname} {$smarty.foreach.foreachname.varname}, где foreachname - это название цикла (значение атрибута name). См. {section} для примеров следующих свойств, так как они идентичны. iteration iteration используется для отображения текущего номера итерации цикла. Итерации всегда начинаются с 1 и увеличиваются на одну при каждом прохождении цикла. first first устанавливается в true, если текущая итерация первая. last last устанавливается в true, если текущая итерация последняя. show Атрибут show может принимать логические значения (истина или ложь). Если ложь, то цикл foreach не будет отображаться. Если присутствует тэг foreachelse, то он будет отображен. total total хранит количество итераций цикла. Может быть использовано как в цикле, так и вне его. См. также {section} и $smarty.foreach.