基本語法
{foreach from=$array item=$item key=$key name=foo}
{$item} - {$key}
{/foreach}
from:要迭代的陣列(必填)。
item:當前元素值變數名(必填)。
key:當前鍵名變數名(選填)。
name:迴圈名稱,用於存取迴圈屬性(選填)。
- 需與
{/foreach} 成對,可巢狀但 name 必須唯一。
foreachelse:陣列為空時執行區塊。
迴圈屬性變數($smarty.foreach.foo.屬性)
| 屬性 | 說明 |
| index | 當前索引(從 0 開始) |
| iteration | 執行次數(從 1 開始) |
| first | 第一次迴圈為 true |
| last | 最後一次迴圈為 true |
| total | 總迴圈次數(迴圈中或後可用) |
範例
基本輸出
{foreach from=$custid item=curr_id}
id: {$curr_id}<br>
{/foreach}
巢狀與鍵名
{foreach name=outer item=contact from=$contacts}
{foreach key=key item=item from=$contact}
{$key}: {$item}<br>
{/foreach}
{/foreach}
索引判斷:每 5 筆插入標題列
<table>
{foreach from=$items key=myId item=i name=foo}
{if $smarty.foreach.foo.index % 5 == 0}
<tr><th>Title</th></tr>
{/if}
<tr><td>{$i.label}</td></tr>
{/foreach}
</table>
第一筆顯示 LATEST
{foreach from=$items key=myId item=i name=foo}
<tr>
<td>{if $smarty.foreach.foo.first}LATEST{else}{$myId}{/if}</td>
<td>{$i.label}</td>
</tr>
{/foreach}
最後一筆加分隔線
{foreach from=$items key=part_id item=prod name=products}
<a href="#{$part_id}">{$prod}</a>{if $smarty.foreach.products.last}<hr>{else},{/if}
{foreachelse}
...無資料...
{/foreach}
迴圈結束顯示總筆數
{foreach from=$items key=part_id item=prod name=foo}
{$prod.label}<hr/>
{if $smarty.foreach.foo.last}
<div id="total">{$smarty.foreach.foo.total} items</div>
{/if}
{foreachelse}
...其他內容...
{/foreach}