foreach,foreachelse

Имя аттрибута Тип Обязателен По умолчанию Описание
from строка (string) Да 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 .

Пример 7-4. foreach

{* выводятся все значния массива $custid *}
{foreach from=$custid item=curr_id}
	id: {$curr_id}<br>
{/foreach}

OUTPUT:

id: 1000<br>
id: 1001<br>
id: 1002<br>

Пример 7-5. foreach key

{* The key contains the key for each looped value

assignment looks like this:

$smarty->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}<br>
  {/foreach}
{/foreach}

OUTPUT:

phone: 1<br>
fax: 2<br>
cell: 3<br>
phone: 555-4444<br>
fax: 555-3333<br>
cell: 760-1234<br>

Циклы foreach имеют свои свойства, доступ к которым реализуется через {$smarty.foreach.foreachname.varname}, где foreachname это название цикла (значение аттрибута name ), а varname - имя свойства.

iteration

Количество отработанных итераций.

Отсчет начинается с 1 и увеличивается на единицу на каждой итерации.

first

first устанавливается в true, если текущая итерация первая.

last

last устанавливается в true, если текущая итерация последняя.

show

Аттрибут show может принимать логические значения (истина или ложь). Если ложь, то цикл foreach не будет отображаться. Если присутствует тэг foreachelse, то он будет отображен.

total

total хранит количество итераций цикла. Может быть использовано как в цикле, так и вне его..