這篇文章主要介紹了PHP模板引擎Smarty內建函數section,sectionelse用法,結合執行個體形式詳細分析了section,sectionelse進行迴圈處理的技巧與使用方法,需要的朋友可以參考下
本文執行個體講述了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
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>section,sectionelse</title></head><body> <table align="center" border="1" width="800"> <tr> <th>編號(iteration)</th> <th>編號(rownum)</th> <th>姓名</th> <th>電子郵件</th> <th>添加時間</th> </tr> <{section loop=$data name="ls" max="100" start="0" step="2" }> <!-- 使用 section 遍曆數組 $data,max 表示最多可以迴圈多少條,start 表示從哪個數組下標開始顯示,step決定了迴圈的步長,如果設定為2,那麼將遍曆下標為0,2,4……的元素 --> <!-- 在此,我們做幾個保留變數 $smarty.section 的操作 --> <!-- 當資料顯示第一條的時候,第一行的表格背景為黃色,使用屬性:first --> <!-- 當資料顯示最後一條的時候,最後一行的表格背景為藍色,使用屬性:last --> <{if $smarty.section.ls.first}> <tr align="center" bgcolor="#FFFF00"> <{elseif $smarty.section.ls.last}> <tr align="center" bgcolor="#0000FF"> <{else}> <tr align="center"> <{/if}> <td><{$smarty.section.ls.iteration}></td> <!-- iteration 是保留變數中顯示行號的屬性 --> <td><{$smarty.section.ls.rownum}></td> <!-- rownum 是保留變數中顯示行號的屬性 --> <td><{$data[ls].username}></td> <!-- 輸出數組第二維下標為 username 的元素值 --> <td><{$data[ls].email}></td> <!-- 輸出數組第二維下標為 email 的元素值 --> <td><{$data[ls].addTime}></td> <!-- 輸出數組第二維下標為 addTime 的元素值 --> </tr> <{sectionelse}> <!-- 如果分配過來的數組沒有內容的話,顯示下面內容 --> <tr> <td colspan="5">對不起!暫時沒有資料。</td> </tr> <{/section}> <{if $data}> <!-- 如果迴圈的次數不為空白的話,那麼使用 Smarty 的保留變數 {$smarty.section} 顯示出迴圈的次數 --> <tr> <td align="center" colspan="5">迴圈的次數為:<{$smarty.section.ls.total}></td> </tr> <{/if}> </table></body></html>
執行結果:
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 |
用於顯示迴圈執行的次數。不僅可以在迴圈中,也可以在執行結束後調用此屬性 |
以上就是本文的全部內容,希望對大家的學習有所協助,更多相關內容請關注topic.alibabacloud.com!