在smarty的使用過程當中,有不少時候須要將一個數組輸出到模板中來處理,如下將演示如何將一個索引(index)數組和關聯(associate)數組在頁面中展示出來。 php
本文中假設有以下一個索引數組 數組
一、索引數組
$people = array('tony','sweety','abc','four');
$smarty->assign('people',$people); oop
在模板中顯示:
{section name=n loop=$people}
name:{$people[n]}<br/>
{/section} 索引
這樣在模板中就能夠顯示出這個數組的內容了。結果以下:
name:tony
name:sweety
name:abc
name:four ci
二、關聯數組 it
$arr = array(
array('id'=>1,'title'=>'title1'),
array('id'=>2,'title'=>'title2'),
array('id'=>3,'title'=>'title3')
);
$smarty->assign('news',$arr); io
在模板中顯示過程以下
複製代碼
{section name=sn loop=$news}
{if $smarty.section.sn.first}
<table>
<th>id</th>
<th>title</th>
{/if}
<tr>
<td>{$news[sn].id}</td>
<td>{$news[sn].title}</td>
</tr>
{if $smarty.section.sn.last}
</table>
{/if}
{sectionelse}
there is no news.
{/section} table
顯示結果以下(是一個表格的樣子,如下顯示的沒有加樣式):
id title
1 title1
2 title2
3 title3 ast
能夠看出,不管是索引仍是關聯數組用起來都是很方便。下面介紹下section中各個屬性的說明: 模板
一、section中的屬性
name:(必選) 是section循環的名稱只是標示循環惟一的名字沒有特別意義,前面沒有$符號;
loop: (必選)是在php聲明中的變量名稱,用來標示是循環哪個數組(即要循環數組名)須要使用$;
start: (可選)循環執行的初始位置. 若是該值爲負數,開始位置從數組的尾部算起. 例如:若是數組中有7個元素,指定start爲-2,那麼指向當前數組的索引爲5. 非法值(超過了循環數組的下限)將被自動調整爲最接近的合法值.
step: (可選)如其它語言的循環,是一個步長,若是爲負數,則倒序循環;
max:(可選)循環的最大下標,若是是1則只循環1次,若是爲2則循環2次;
show:(可選)默認爲true即顯示。若是設置了{sectionelse}。表示若是數組沒有內容的時候顯示這部分的內容;若是show爲false則顯示這部分。若是沒有設置{sectionelse}則不輸出該數組。
二、smarty中section中的變量
index:用於顯示當前循環的索引,從0開始(若是指定了start屬性,那麼由該值開始),每次加1(若是指定了step屬性,那麼由該值決定).若是沒有指定step和start屬性,此值的做用和iteration相似,只不過從0開始而已.
index_prev:用於顯示上一個循環索引值. 循環開始時,此值爲-1.
index_next:用於顯示下一個循環索引值. 循環執行到最後一次時,此值仍然比當前索引值大1(若是指定了step,取決於此值).
iteration:用於顯示循環的次數.iteration 不像index屬性受start、step和max屬性的影響,該值老是從1開始(index是從0開始的).rownum 是iteration的別名,二者等同.
first:若是當前循環第一次執行,first 被設置爲true.
last:若是當前循環執行到最後一次,last 被設置爲true.
rownum:用於顯示循環的次數. 該屬性是iteration的別名,二者等同.
loop:用於顯示該循環上一次循環時的索引值. 該值能夠用於循環內部或循環結束後.
show:是 section 的參數. show 取值爲布爾值 true 或 false. 若是設置爲 false,該循環將不顯示. 若是指定了 sectionelse 子句,該字句是否顯示也取決於該值.
total:用於顯示循環執行總的次數. 能夠在循環中或執行結束後調用此屬性.