Tag {foreach} [RU] ================== ```smarty {foreach $list as [$key =>] $value [index=$index] [first=$first] [last=$last]} {* ...code... *} {break} {* ...code... *} {continue} {* ...code... *} {foreachelse} {* ...code... *} {/foreach} ``` ### {foreach} Перебор значений массива $list ```smarty {foreach $list as $value}
{$value}
{/foreach} ``` Перебор ключей и значений массива $list ```smarty {foreach $list as $key => $value}
{$key}: {$value}
{/foreach} ``` Получение номера (индекса) итерации ```smarty {foreach $list as $value index=$index}
№{$index}: {$value}
{/foreach} ``` Определение первого элемента ```smarty {foreach $list as $value first=$first}
{if $first} first item {/if} {$value}
{/foreach} ``` Переменная `$first` будет иметь значение **TRUE**, если текущая итерация является первой. Определение последнего элемента ```smarty {foreach $list as $value last=$last}
{if $last} last item {/if} {$value}
{/foreach} ``` Переменная `$last` будет иметь значение **TRUE**, если текущая итерация является последней. ### {break} Тег `{break}` используется для выхода из цикла до достижения последней итерации. Если в цикле встречается тег `{break}`, цикл завершает свою работу, и далее, выполняется код, следующий сразу за блоком цикла ### {continue} Тег `{continue}` используется для прерывания текущей итерации. Если в цикле встречается тег `{continue}`, часть цикла, следующая после тега, не выполняется, и начинается следующая итерация. Если текущая итерация была последней, цикл завершается. ### {foreachelse} Тег {foreachelse} ограничивает код, который должен быть выполнен, если итерируемый объект пуст. ```smarty {var $list = []} {foreach $list as $value}
{if $last} last item {/if} {$value}
{foreachelse}
empty
{/foreach} ``` В блоке `{foreachelse}...{/foreach}` использование `{break}`, `{continue}` выбросит исключение `Cytro\CompileException` при компиляции ### Notice Использование last требует от `$list` быть **countable**.