本文實例講述了PHP模板引擎Smarty內建函數section,sectionelse用法。分享給大家供大家參考,具體如下:
section 是 Smarty 模板中除了 foreach 以外的另一種處理循環的方案,section 比 foreach 要靈活,就像是一個改進的 foreach 語句,除了擁有相同的循環特性外,還提供了很多附加選項,可以更好的控制循環的執行。在模板中,必須使用成對的 section 標記,有兩個必須設置的屬性 name 和 loop ,關于 section 的屬性請看下表:
屬性
類型
是否必須
缺省值
描述
name
string
Yes
n/a
該循環的名稱
loop
[$variable_name]
Yes
n/a
決定循環次數的變量名稱
start
integer
No
0
循環執行的初始位置. 如果該值為負數,開始位置從數組的尾部算起. 例如:如果數組中有7個元素,指定start為-2,那么指向當前數組的索引為5. 非法值(超過了循環數組的下限)將被自動調整為最接近的合法值.
step
integer
No
1
該值決定循環的步長. 例如指定step=2將只遍歷下標為0、2、4等的元素. 如果step為負值,那么遍歷數組的時候從后向前遍歷.
max
integer
No
1
設定循環最大執行次數.
show
boolean
No
true
決定是否顯示該循環.
我們通過一個實例,來演示 Smarty 中 {section} 和 {sectionelse} 的使用。
實例思路:從數據庫中取出內容,賦給一個數組變量 $_html ,再給這個數組變量分配給模板,然后在模板中進行該數組的遍歷。
數據庫、主文件 index.php,Smarty 模板初始化文件 init.inc.php,可參考前面一篇《PHP模板引擎Smarty內建函數foreach,foreachelse用法分析》
/tpl/index.tpl
section,sectionelse編號(iteration) | 編號(rownum) | 姓名 | 電子郵件 | 添加時間 |
---|---|---|---|---|
對不起!暫時沒有數據。 | ||||
循環的次數為: |
執行結果:
section 循環區域中可以使用的變量
變量名
描述
index
用于顯示當前循環的索引,從 0 開始(如果設置了 start 屬性,那么就由該值開始),每次加 1,(如果指定了 step 屬性,那么由該值決定)
index_prev
用于顯示上一個循環索引值,循環開始時,此值為 -1
index_next
用于顯示下一個循環索引值,循環執行到最后一次時,此值仍然比當前索引值大 1(如果指定了 step 屬性,那么由該值決定)
iteration
用于顯示循環的次數
first
當前 section 循環在第一次執行時該變量的值為 true
last
當前 section 循環在最后一次執行時該變量的值為 true
rownum
用于顯示循環的次數,該屬性是 iteration 的別名,兩者相同
loop
用于顯示該循環上一次循環時的索引值,該值可以用于循環內部或循環結束后
show
是 section 的參數,show 取值為布爾值 true 和 false,如果設置為false,該循環將不顯示。如果指定了 sectionelse 子句,該子句是否顯示也取決于該值
total
用于顯示循環執行的次數。不僅可以在循環中,也可以在執行結束后調用此屬性
希望本文所述對大家基于smarty模板的PHP程序設計有所幫助。