溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP模板引擎Smarty內建函數(shù)section,sectionelse怎么用

發(fā)布時間:2021-08-31 13:36:10 來源:億速云 閱讀:140 作者:小新 欄目:開發(fā)技術

這篇文章給大家分享的是有關PHP模板引擎Smarty內建函數(shù)section,sectionelse怎么用的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

具體如下:

section 是 Smarty 模板中除了 foreach 以外的另一種處理循環(huán)的方案,section 比 foreach 要靈活,就像是一個改進的 foreach 語句,除了擁有相同的循環(huán)特性外,還提供了很多附加選項,可以更好的控制循環(huán)的執(zhí)行。在模板中,必須使用成對的 section 標記,有兩個必須設置的屬性 name 和 loop ,關于 section 的屬性請看下表:

屬性類型是否必須缺省值描述
namestringYesn/a該循環(huán)的名稱
loop[$variable_name]Yesn/a決定循環(huán)次數(shù)的變量名稱
startintegerNo0循環(huán)執(zhí)行的初始位置. 如果該值為負數(shù),開始位置從數(shù)組的尾部算起. 例如:如果數(shù)組中有7個元素,指定start為-2,那么指向當前數(shù)組的索引為5. 非法值(超過了循環(huán)數(shù)組的下限)將被自動調整為最接近的合法值.
stepintegerNo1該值決定循環(huán)的步長. 例如指定step=2將只遍歷下標為0、2、4等的元素. 如果step為負值,那么遍歷數(shù)組的時候從后向前遍歷.
maxintegerNo1設定循環(huán)最大執(zhí)行次數(shù).
showbooleanNotrue決定是否顯示該循環(huán).

我們通過一個實例,來演示 Smarty 中 {section} 和 {sectionelse} 的使用。

實例思路:從數(shù)據(jù)庫中取出內容,賦給一個數(shù)組變量 $_html ,再給這個數(shù)組變量分配給模板,然后在模板中進行該數(shù)組的遍歷。

數(shù)據(jù)庫、主文件 index.php,Smarty 模板初始化文件 init.inc.php,可參考前面一篇《PHP模板引擎Smarty內建函數(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>編號(iteration)</th>
   <th>編號(rownum)</th>
   <th>姓名</th>
   <th>電子郵件</th>
   <th>添加時間</th>
  </tr>
  <{section loop=$data name="ls" max="100" start="0" step="2" }> <!-- 使用 section 遍歷數(shù)組 $data,max 表示最多可以循環(huán)多少條,start 表示從哪個數(shù)組下標開始顯示,step決定了循環(huán)的步長,如果設置為2,那么將遍歷下標為0,2,4……的元素 -->
  <!-- 在此,我們做幾個保留變量 $smarty.section 的操作 -->
    <!-- 當數(shù)據(jù)顯示第一條的時候,第一行的表格背景為黃色,使用屬性:first -->
    <!-- 當數(shù)據(jù)顯示最后一條的時候,最后一行的表格背景為藍色,使用屬性: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> <!-- 輸出數(shù)組第二維下標為 username 的元素值 -->
   <td><{$data[ls].email}></td> <!-- 輸出數(shù)組第二維下標為 email 的元素值 -->
   <td><{$data[ls].addTime}></td> <!-- 輸出數(shù)組第二維下標為 addTime 的元素值 -->
  </tr>
  <{sectionelse}> <!-- 如果分配過來的數(shù)組沒有內容的話,顯示下面內容 -->
  <tr>
   <td colspan="5">對不起!暫時沒有數(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í)行結果:

PHP模板引擎Smarty內建函數(shù)section,sectionelse怎么用

section 循環(huán)區(qū)域中可以使用的變量

變量名

描述

index用于顯示當前循環(huán)的索引,從 0 開始(如果設置了 start 屬性,那么就由該值開始),每次加 1,(如果指定了 step 屬性,那么由該值決定)
index_prev用于顯示上一個循環(huán)索引值,循環(huán)開始時,此值為 -1
index_next用于顯示下一個循環(huán)索引值,循環(huán)執(zhí)行到最后一次時,此值仍然比當前索引值大 1(如果指定了 step 屬性,那么由該值決定)
iteration用于顯示循環(huán)的次數(shù)
first當前 section 循環(huán)在第一次執(zhí)行時該變量的值為 true
last當前 section 循環(huán)在最后一次執(zhí)行時該變量的值為 true
rownum用于顯示循環(huán)的次數(shù),該屬性是 iteration 的別名,兩者相同
loop用于顯示該循環(huán)上一次循環(huán)時的索引值,該值可以用于循環(huán)內部或循環(huán)結束后
show是 section 的參數(shù),show 取值為布爾值 true 和 false,如果設置為false,該循環(huán)將不顯示。如果指定了 sectionelse 子句,該子句是否顯示也取決于該值
total用于顯示循環(huán)執(zhí)行的次數(shù)。不僅可以在循環(huán)中,也可以在執(zhí)行結束后調用此屬性

感謝各位的閱讀!關于“PHP模板引擎Smarty內建函數(shù)section,sectionelse怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI