smarty中 下標不是從0開始的一維陣列 用foreach讀取
一,foreache,foreacheelse,/foreache方法
1,它是section 之外處理迴圈的另一種方案(根據不同需要選擇不同的方案).用於處理簡單陣列(陣列中的元素的型別一致),它的格式比section 簡單許多,缺點是隻能處理簡單陣列.
2,foreach 必須和 /foreach 成對使用,且必須指定from 和
item 屬性.
3,foreach可以圈套不過name必須為一
4,from 待迴圈陣列的名稱,key陣列下標,item當前處理元素的變數名稱,name該迴圈的名稱,用於訪問該迴圈
5,foreachelse 語句在 from 後面的陣列對像沒有值的時候被執行.
二,section,sectionelse,/section方法
section 用於遍歷陣列中的資料. section 標籤必須成對出現. 必須設定name 和 loop 屬性. 名稱可以是包含字母、數字和下劃線的任意組合. 可以巢狀但必須保證巢狀的 name 唯一. 變數 loop (通常是陣列)決定迴圈執行的次數. 當需要在 section 迴圈內輸出變數時,必須在變數後加上中括號包含著的 name 變數.sectionelse 當 loop 變數無值時被執行.
section裡面可以帶的引數如下
1,name單次迴圈的名稱,必須有的選項
2,loop迴圈的變數名稱,必須有的選項
3,start
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讀取更加合適