關於PHP模板引擎Smarty內建函數section和sectionelse的用法

來源:互聯網
上載者:User
這篇文章主要介紹了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!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.