激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP模板引擎Smarty內建函數section,sectionelse用法詳解

PHP模板引擎Smarty內建函數section,sectionelse用法詳解

2021-01-09 18:16ruxingli PHP教程

這篇文章主要介紹了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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<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>

執行結果:

PHP模板引擎Smarty內建函數section,sectionelse用法詳解

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程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久久久久久久91 | 污污短视频 | 久在线草| 精品国产91一区二区三区 | 欧美a级毛片 | 黑人一级片视频 | av在线免费看片 | 欧美激情区| 久久电影一区二区 | 久草视频在线看 | 国产午夜免费 | 国产精品6区 | www中文在线 | 男男啪羞羞视频网站 | 日韩精品a在线观看 | 欧美黄色一级生活片 | 婷婷久久青草热一区二区 | 色人阁导航 | 久久久麻豆 | 青青草成人影视 | 国产精品一区网站 | 久久久久久久久久久一区 | 久久久经典视频 | 伊人午夜视频 | 色偷偷一区 | 中文字幕精品亚洲 | 99riav视频一区二区 | 免费观看国产精品视频 | 精品一区二区免费 | 免费永久在线观看黄网 | 欧美亚洲黄色 | 一级成人毛片 | 男女生羞羞视频网站在线观看 | 欧美成人精品一区二区三区 | 欧美一级毛片欧美一级成人毛片 | 精品国产一区二区三区四区阿崩 | 成人爱爱电影 | 欧美一级毛片一级毛片 | 一级毛片免费的 | japan护士性xxxⅹhd | 国产精品久久久久久久久久10秀 |