{foreach},{foreachelse} {foreach} dipakai untuk mengulang terus-menerus melalui array asosiatif juga array-diindeks secara numerik, tidak seperti {section} yang untuk mengulang melalui hanya array-diindeks secara numerik. Sintaks untuk {foreach} jauh lebih mudah daripada {section}, tapi sebagai imbalannya hanya bisa dipakai untuk array tunggal. Setiap tag {foreach} harus dipasangkan dengan tag {/foreach} penutup. Attribute Name Type Required Default Description from array Yes n/a Array yang anda ulang terus item string Yes n/a Nama variabel yang jadi elemen saat ini key string No n/a Nama variabel yang saat ini jadi kunci name string No n/a Nama perulangan foreach untuk mengakses properti Atribut yang diperlukan adalah from dan item. Name dari pengulangan {foreach} bisa apa saja yang anda sukai, terdiri dari huruf, angka dan garis bawah, seperti variabel PHP. Pengulangan {foreach} bisa diulang terus, dan nama {foreach} yang diulang harus unik dari yang lain. Atribut from, biasanya sebuah array nilai, menetapkan jumlah berapa kali {foreach} akan diulang. {foreachelse} dijalankan ketika tidak ada nilai dalam variabel from. Pengulangan {foreach} juga memiliki variabelnya sendiri yang menangani properti. Ini diakses dengan: {$smarty.foreach.name.property} dengan name menjadi atribut name. Catatan Atribut name hanya diperlukan saat anda ingin mengakses properti {foreach}, tidak seperti {section}. Mengakses properti {foreach} dengan name tidak terdefinisi tidak menimbulkan kesalahan, tapi sebaliknya mengakibatkan hasil yang tidak diinginkan. Properti {foreach} adalah index, iteration, first, last, show, total. Atribut <parameter>item</parameter> assign('myArray', $arr); ?> ]]> Template untuk ditampilkan $myArray dalam daftar tidak-berurut {foreach from=$myArray item=foo}
  • {$foo}
  • {/foreach} ]]>
    Contoh di atas akan menampilkan:
  • 1000
  • 1001
  • 1002
  • ]]>
    Mendemonstrasikan atribut <parameter>item</parameter> dan <parameter>key</parameter> 'Tennis', 3 => 'Swimming', 8 => 'Coding'); $smarty->assign('myArray', $arr); ?> ]]> Template untuk ditampilkan $myArray sebagai pasangan kunci/nilai, seperti foreach PHP. {foreach from=$myArray key=k item=v}
  • {$k}: {$v}
  • {/foreach} ]]>
    Contoh di atas akan menampilkan:
  • 9: Tennis
  • 3: Swimming
  • 8: Coding
  • ]]>
    {foreach} dengan asosiatif atribut <parameter>item</parameter> array('no' => 2456, 'label' => 'Salad'), 96 => array('no' => 4889, 'label' => 'Cream') ); $smarty->assign('items', $items_list); ?> ]]> Template untuk ditampilkan $items dengan $myId dalam url {foreach from=$items key=myId item=i}
  • {$i.no}: {$i.label}
  • {/foreach} ]]>
    Contoh di atas akan menampilkan:
  • 2456: Salad
  • 4889: Cream
  • ]]>
    {foreach} dengan pengulangan <parameter>item</parameter> dan <parameter>key</parameter> Menempatkan array ke Smarty, kunci berisi kunci untuk setiap nilai yang diulang. assign('contacts', array( array('phone' => '1', 'fax' => '2', 'cell' => '3'), array('phone' => '555-4444', 'fax' => '555-3333', 'cell' => '760-1234') )); ?> ]]> Template yang menampilkan $contact. {foreach key=key item=item from=$contact} {$key}: {$item}
    {/foreach} {/foreach} ]]>
    Contoh diatas akan menampilkan: phone: 1
    fax: 2
    cell: 3

    phone: 555-4444
    fax: 555-3333
    cell: 760-1234
    ]]>
    Contoh database dengan {foreachelse} Contoh database (seperti PEAR atau ADODB) dari naskah pencarian, hasil query ditempatkan ke Smarty assign('results', $db->getAssoc($sql) ); ?> ]]> Template yang menampilkan None found jika tidak ada hasil dengan {foreachelse}. {$con.name} - {$con.nick}

    {foreachelse} No items were found in the search {/foreach} ]]> .index index berisi indeks array saat ini, dimulai dengan nol. contoh <parameter>index</parameter> {foreach from=$items key=myId item=i name=foo} {if $smarty.foreach.foo.index % 5 == 0} Title {/if} {$i.label} {/foreach} ]]> .iteration iteration berisi iterasi perulangan saat ini dan selalu dimulai dari satu, tidak seperti indeks. Ia bertambah satu setiap kali iterasi. contoh <parameter>iteration</parameter> dan <parameter>indeks</parameter> .first first adalah &true; jika iterasi {foreach} saat ini adalah yang awal. contoh properti <parameter>first</parameter> {foreach from=$items key=myId item=i name=foo} {if $smarty.foreach.foo.first}LATEST{else}{$myId}{/if} {$i.label} {/foreach} ]]> .last last disetel &true; jika iterasi {foreach} saat ini adalah yang terakhir. contoh properti <parameter>last</parameter> {$prod}{if $smarty.foreach.products.last}
    {else},{/if} {foreachelse} ... konten ... {/foreach} ]]>
    .show show dipakai sebagai parameter untuk {foreach}. show adalah nilai boolean. Jika &false;, {foreach} tidak akan ditampilkan. Jika terdapat {foreachelse}, akan ditampilkan secara selang-seling. .total total berisi jumlah iterasi yang akan diulang {foreach}. Ini dapat digunakan di dalam atau setelah {foreach}. contoh properti <parameter>total</parameter>
    {if $smarty.foreach.foo.last}
    {$smarty.foreach.foo.total} items
    {/if} {foreachelse} ... something else ... {/foreach} ]]>
    Lihat juga {section} dan $smarty.foreach.