PHP模板引擎Smarty內(nèi)建函數(shù)section,sectionelse用法詳解
本文實(shí)例講述了PHP模板引擎Smarty內(nèi)建函數(shù)section,sectionelse用法。分享給大家供大家參考,具體如下:
section 是 Smarty 模板中除了 foreach 以外的另一種處理循環(huán)的方案,section 比 foreach 要靈活,就像是一個(gè)改進(jìn)的 foreach 語(yǔ)句,除了擁有相同的循環(huán)特性外,還提供了很多附加選項(xiàng),可以更好的控制循環(huán)的執(zhí)行。在模板中,必須使用成對(duì)的 section 標(biāo)記,有兩個(gè)必須設(shè)置的屬性 name 和 loop ,關(guān)于 section 的屬性請(qǐng)看下表:
屬性 | 類型 | 是否必須 | 缺省值 | 描述 |
---|---|---|---|---|
name | string | Yes | n/a | 該循環(huán)的名稱 |
loop | [$variable_name] | Yes | n/a | 決定循環(huán)次數(shù)的變量名稱 |
start | integer | No | 0 | 循環(huán)執(zhí)行的初始位置. 如果該值為負(fù)數(shù),開(kāi)始位置從數(shù)組的尾部算起. 例如:如果數(shù)組中有7個(gè)元素,指定start為-2,那么指向當(dāng)前數(shù)組的索引為5. 非法值(超過(guò)了循環(huán)數(shù)組的下限)將被自動(dòng)調(diào)整為最接近的合法值. |
step | integer | No | 1 | 該值決定循環(huán)的步長(zhǎng). 例如指定step=2將只遍歷下標(biāo)為0、2、4等的元素. 如果step為負(fù)值,那么遍歷數(shù)組的時(shí)候從后向前遍歷. |
max | integer | No | 1 | 設(shè)定循環(huán)最大執(zhí)行次數(shù). |
show | boolean | No | true | 決定是否顯示該循環(huán). |
我們通過(guò)一個(gè)實(shí)例,來(lái)演示 Smarty 中 {section} 和 {sectionelse} 的使用。
實(shí)例思路:從數(shù)據(jù)庫(kù)中取出內(nèi)容,賦給一個(gè)數(shù)組變量 $_html ,再給這個(gè)數(shù)組變量分配給模板,然后在模板中進(jìn)行該數(shù)組的遍歷。
數(shù)據(jù)庫(kù)、主文件 index.php,Smarty 模板初始化文件 init.inc.php,可參考前面一篇《PHP模板引擎Smarty內(nèi)建函數(shù)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>編號(hào)(iteration)</th> <th>編號(hào)(rownum)</th> <th>姓名</th> <th>電子郵件</th> <th>添加時(shí)間</th> </tr> <{section loop=$data name="ls" max="100" start="0" step="2" }> <!-- 使用 section 遍歷數(shù)組 $data,max 表示最多可以循環(huán)多少條,start 表示從哪個(gè)數(shù)組下標(biāo)開(kāi)始顯示,step決定了循環(huán)的步長(zhǎng),如果設(shè)置為2,那么將遍歷下標(biāo)為0,2,4……的元素 --> <!-- 在此,我們做幾個(gè)保留變量 $smarty.section 的操作 --> <!-- 當(dāng)數(shù)據(jù)顯示第一條的時(shí)候,第一行的表格背景為黃色,使用屬性:first --> <!-- 當(dāng)數(shù)據(jù)顯示最后一條的時(shí)候,最后一行的表格背景為藍(lán)色,使用屬性: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 是保留變量中顯示行號(hào)的屬性 --> <td><{$smarty.section.ls.rownum}></td> <!-- rownum 是保留變量中顯示行號(hào)的屬性 --> <td><{$data[ls].username}></td> <!-- 輸出數(shù)組第二維下標(biāo)為 username 的元素值 --> <td><{$data[ls].email}></td> <!-- 輸出數(shù)組第二維下標(biāo)為 email 的元素值 --> <td><{$data[ls].addTime}></td> <!-- 輸出數(shù)組第二維下標(biāo)為 addTime 的元素值 --> </tr> <{sectionelse}> <!-- 如果分配過(guò)來(lái)的數(shù)組沒(méi)有內(nèi)容的話,顯示下面內(nèi)容 --> <tr> <td colspan="5">對(duì)不起!暫時(shí)沒(méi)有數(shù)據(jù)。</td> </tr> <{/section}> <{if $data}> <!-- 如果循環(huán)的次數(shù)不為空的話,那么使用 Smarty 的保留變量 {$smarty.section} 顯示出循環(huán)的次數(shù) --> <tr> <td align="center" colspan="5">循環(huán)的次數(shù)為:<{$smarty.section.ls.total}></td> </tr> <{/if}> </table> </body> </html>
執(zhí)行結(jié)果:
section 循環(huán)區(qū)域中可以使用的變量
變量名
|
描述
|
index | 用于顯示當(dāng)前循環(huán)的索引,從 0 開(kāi)始(如果設(shè)置了 start 屬性,那么就由該值開(kāi)始),每次加 1,(如果指定了 step 屬性,那么由該值決定) |
index_prev | 用于顯示上一個(gè)循環(huán)索引值,循環(huán)開(kāi)始時(shí),此值為 -1 |
index_next | 用于顯示下一個(gè)循環(huán)索引值,循環(huán)執(zhí)行到最后一次時(shí),此值仍然比當(dāng)前索引值大 1(如果指定了 step 屬性,那么由該值決定) |
iteration | 用于顯示循環(huán)的次數(shù) |
first | 當(dāng)前 section 循環(huán)在第一次執(zhí)行時(shí)該變量的值為 true |
last | 當(dāng)前 section 循環(huán)在最后一次執(zhí)行時(shí)該變量的值為 true |
rownum | 用于顯示循環(huán)的次數(shù),該屬性是 iteration 的別名,兩者相同 |
loop | 用于顯示該循環(huán)上一次循環(huán)時(shí)的索引值,該值可以用于循環(huán)內(nèi)部或循環(huán)結(jié)束后 |
show | 是 section 的參數(shù),show 取值為布爾值 true 和 false,如果設(shè)置為false,該循環(huán)將不顯示。如果指定了 sectionelse 子句,該子句是否顯示也取決于該值 |
total | 用于顯示循環(huán)執(zhí)行的次數(shù)。不僅可以在循環(huán)中,也可以在執(zhí)行結(jié)束后調(diào)用此屬性 |
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《smarty模板入門基礎(chǔ)教程》、《PHP模板技術(shù)總結(jié)》、《PHP基于pdo操作數(shù)據(jù)庫(kù)技巧總結(jié)》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《PHP基本語(yǔ)法入門教程》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家基于smarty模板的PHP程序設(shè)計(jì)有所幫助。
- smarty內(nèi)置函數(shù)section的用法
- smarty section簡(jiǎn)介與用法分析
- Smarty foreach控制循環(huán)次數(shù)的一些方法
- php中smarty區(qū)域循環(huán)的方法
- smarty模板引擎使用內(nèi)建函數(shù)foreach循環(huán)取出所有數(shù)組值的方法
- Smarty foreach控制循環(huán)次數(shù)的實(shí)現(xiàn)詳解
- php smarty 二級(jí)分類代碼和模版循環(huán)例子
- php smarty 二級(jí)分類代碼和模版循環(huán)例子
- smarty的section嵌套循環(huán)用法示例
相關(guān)文章
Codeigniter控制器controller繼承問(wèn)題實(shí)例分析
這篇文章主要介紹了Codeigniter控制器controller繼承問(wèn)題,以簡(jiǎn)單實(shí)例形式分析了CodeIgniter中針對(duì)控制器controller繼承的實(shí)現(xiàn)與使用方法,需要的朋友可以參考下2016-01-01安裝PHP擴(kuò)展時(shí)解壓官方 tgz 文件后沒(méi)有configure文件無(wú)法進(jìn)行配置編譯的問(wèn)題
這篇文章主要介紹了安裝PHP擴(kuò)展時(shí)解壓官方 tgz 文件后沒(méi)有configure文件無(wú)法進(jìn)行配置編譯的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-08-08destoon實(shí)現(xiàn)調(diào)用圖文新聞的方法
這篇文章主要介紹了destoon實(shí)現(xiàn)調(diào)用圖文新聞的方法,是非常實(shí)用的技巧,需要的朋友可以參考下2014-08-08tp5.1框架數(shù)據(jù)庫(kù)子查詢操作實(shí)例分析
這篇文章主要介紹了tp5.1框架數(shù)據(jù)庫(kù)子查詢操作,結(jié)合實(shí)例形式分析了tp5.1框架數(shù)據(jù)庫(kù)子查詢相關(guān)原理、操作實(shí)現(xiàn)方法與注意事項(xiàng),需要的朋友可以參考下2020-05-05詳解PHP實(shí)現(xiàn)支付寶小程序用戶授權(quán)的工具類
這篇文章主要介紹了詳解PHP實(shí)現(xiàn)支付寶小程序用戶授權(quán)的工具類,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12php 文件下載 出現(xiàn)下載文件內(nèi)容亂碼損壞的解決方法(推薦)
下面小編就為大家?guī)?lái)一篇php 文件下載 出現(xiàn)下載文件內(nèi)容亂碼損壞的解決方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11Yii2 GridView實(shí)現(xiàn)列表頁(yè)直接修改數(shù)據(jù)的方法
這篇文章主要介紹了Yii2 GridView實(shí)現(xiàn)列表頁(yè)直接修改數(shù)據(jù)的方法的相關(guān)資料,小編認(rèn)為非常具有參考價(jià)值,特此分享到腳本之家平臺(tái),需要的朋友可以參考下2016-05-05