1. 程式人生 > >smarty中 下標不是從0開始的一維陣列 用foreach讀取

smarty中 下標不是從0開始的一維陣列 用foreach讀取

一,foreache,foreacheelse,/foreache方法

1,它是section 之外處理迴圈的另一種方案(根據不同需要選擇不同的方案).用於處理簡單陣列(陣列中的元素的型別一致),它的格式比section 簡單許多,缺點是隻能處理簡單陣列.
2foreach 必須和 /foreach 成對使用且必須指定fromitem 屬性.


3foreach可以圈套不過name必須為一
4from 待迴圈陣列的名稱,key陣列下標,item當前處理元素的變數名稱,name該迴圈的名稱,用於訪問該迴圈
5foreachelse 語句在 from 後面的陣列對像沒有值的時候被執行.

二,section,sectionelse,/section方法

section 用於遍歷陣列中的資料. section 標籤必須成對出現. 必須設定nameloop 屬性. 名稱可以是包含字母、數字和下劃線的任意組合. 可以巢狀但必須保證巢狀的 name 唯一. 變數 loop (通常是陣列)決定迴圈執行的次數. 當需要在 section 迴圈內輸出變數時,必須在變數後加上中括號包含著的 name 變數.sectionelse 當 loop 變數無值時被執行.

section裡面可以帶的引數如下

1,name單次迴圈的名稱,必須有的選項
2,loop迴圈的變數名稱,必須有的選項
3,start

迴圈開始的KEY值 ,預設是從第一個開始,
4,step設定迴圈的跳躍數,step=2將只遍歷下標為0、2、4等的元素.
5,max迴圈的次數,預設為1,
6,show是不是顯示該迴圈

從上面引數中我們可以看到,沒有提到下標,我們經常會用到陣列下標。但是smarty裡面帶的有.

下面的arrayname是section裡面的單次迴圈名稱

a,$smarty.section.arrayname.index 陣列下標,根foreach 的key差不多

b,$smarty.section.arrayname.index_prev 上次迴圈的下標 根$smarty.section.arrayname.loop

差不多

c,$smarty.section.arrayname.index_next 下次迴圈的下標

d,$smarty.section.arrayname.iteration 第幾次迴圈了 根rownum一樣

e,$smarty.section.arrayname.first 第一次迴圈

f,$smarty.section.arrayname.last 最後一次迴圈

g,$smarty.section.arrayname.show 迴圈是否顯示

h,$smarty.section.arrayname.total 總共迴圈了多少次

如果是一維陣列,並且帶有下標的話,並且不是按0,1,2這樣的順序的話用section就取不到東西。

所以這種情況下用foreach讀取更加合適