Документация Smarty


{foreach},{foreachelse}

Циклы {foreach} являются альтернативой циклам {section}. {foreach} используется для прохода по единственному ассоциативному массиву. Синтаксис {foreach} намного проще синтаксиса {section}, но с другой стороны его можно использовать только для одного массива. Каждый тэг {foreach} должен иметь пару {/foreach}. Обязательными параметрами являются from и item. Имя цикла {foreach} может быть любым, состоящим из букв, цифр и знаков подчеркивания. Циклы {foreach} могут быть вложенными и имена вложенных {foreach} должны быть уникакльными между собой. Параметр from (обычно - массив значений) определяет количество итераций цикла {foreach}. {foreachelse} выполняется в том случае, если параметр from не содержит значений.

Имя атрибутаТипОбязателенПо умолчаниюОписание
fromarrayДаn/aМассив, по которому надо пройтись
itemstringДаn/aИмя переменной, которая будет выступать в качестве значения текущего елемента
keystringНетn/aИмя переменной, которая будет выступать в качестве ключа текущего елемента
namestringНетn/aНазвание цикла foreach для доступа к его свойствам

Пример 7-5. {foreach} - предмет

<?php
$arr 
= array( 1001,1002,1003);
$smarty->assign('custid'$arr);
?>
{* этот пример напечатает все переменные массива $custid *}
{foreach from=$custid item=curr_id}
    id: {$curr_id}<br />
{/foreach}

Результат выполнения данного примера:

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

Пример 7-6. {foreach} - предмет и ключ

// Ключ содержит ключ для каждого значения из цикла
// назначение выглядит примерно так:
<?php
$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}
    <hr />
    {foreach key=key item=item from=$contact}
        {$key}: {$item}&lt;br&gt;
        {$key}: {$item}<br />
    {/foreach}
{/foreach}

Результат выполнения данного примера:

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

Пример 7-7. {foreach} - базы данных (к примеру, PEAR или ADODB)

<?php
  $sql 
'select contact_id, name, nick from contacts order by contact';
  
$smarty->assign("contacts"$db->getAssoc($sql));
?>
{foreach key=cid item=con from=$contacts}
    <a href="contact.php?contact_id={$cid}">{$con.name} - {$con.nick}</a><br />
{/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.

SAPE все усложнил?

MainLink - простая и прибыльная продажа ссылок!

Последние поступления:

Размещена 10 августа 2020 года

Я по ТВ видел, что через 10 лет мы будем жить лучше, чем в Германии...
Я не понял, что это они с Германией сделать хотят?!

читать далее…

ТехЗадание на Землю

Размещена 14 марта 2018 года

Пpоект Genesis (из коpпоpативной пеpеписки)

читать далее…

Шпаргалка по работе с Vim

Размещена 05 декабря 2017 года

Vim довольно мощный редактор, но работа с ним не всегда наглядна.
Например если нужно отредактировать какой-то файл например при помощи crontab, без знания специфики работы с viv никак.

читать далее…

Ошибка: Error: Cannot find a valid baseurl for repo

Размещена 13 сентабря 2017 года

Если возникает ошибка на centos 5 вида
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
Eg. Invalid release/

читать далее…

Linux Optimization

Размещена 30 июля 2012 года

Prelink

читать далее…