foreach,foreachelse
Имя атрибута
Тип
Обязателен
По умолчанию
Описание
from
array
Да
n/a
Массив, по которому надо пройтись
item
string
Да
n/a
Имя переменной, которая будет выступать в
качестве значения текущего елемента
key
string
Нет
n/a
Имя переменной, которая будет выступать в
качестве ключа текущего елемента
name
string
Нет
n/a
Название цикла foreach для доступа к его
свойствам
Циклы foreach являются альтернативой
циклам section. Циклы
foreach используются для прохождения
по одному массиву. Синтаксис foreach
намного проще, чем section, но его
можно использовать только для одного массива.
Тэг foreach должен иметь в пару тэг
/foreach. Обязательные параметры -
from и item. Название
цикла foreach может быть любой последовательностью букв, цифр
и знаков подчеркиваний _. Циклы foreach
могут быть вложенные, и имена вложенных циклов должны быть
уникальные. Переменная from (обычно
массив значений) указывает количество итераций цикла.
foreachelse выполняется, если нету значений
в переменной from.
foreach
{/foreach}
OUTPUT:
id: 1000
id: 1001
id: 1002
]]>
foreach key
assign("contacts", array(array("phone" => "1", "fax" => "2", "cell" => "3"),
array("phone" => "555-4444", "fax" => "555-3333", "cell" => "760-1234")));
*}
{foreach name=outer item=contact from=$contacts}
{foreach key=key item=item from=$contact}
{$key}: {$item}
{/foreach}
{/foreach}
OUTPUT:
phone: 1
fax: 2
cell: 3
phone: 555-4444
fax: 555-3333
cell: 760-1234
]]>
Циклы foreach имеют свои свойства, доступ к которым реализуется через
{$smarty.foreach.foreachname.varname}, где foreachname это название цикла
(значение атрибута name), а varname - имя свойства.
iteration
Количество отработанных итераций.
Отсчет начинается с 1 и увеличивается на единицу на каждой итерации.
first
first устанавливается в true, если текущая итерация первая.
last
last устанавливается в true, если текущая итерация последняя.
show
Атрибут show может принимать логические
значения (истина или ложь). Если ложь, то цикл foreach не будет
отображаться. Если присутствует тэг foreachelse, то он будет
отображен.
total
total хранит количество итераций цикла.
Может быть использовано как в цикле, так и вне его..