首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Smarty foreach 迴圈控制大全:取得長度、索引與精準限制筆數

     編輯:PHP 相關知識

在 Smarty 模板開發中,{foreach} 是遍歷陣列的主力工具。但許多開發者只會基本迴圈,對於「取得陣列長度」、「判斷首尾」、「限制輸出筆數」等進階控制不夠熟悉。本文整理實用屬性與控制技巧,助你寫出更彈性的模板邏輯。

核心屬性速查表

在 {foreach} 區塊內,透過 $smarty.foreach.名稱.屬性 存取:

屬性說明型別/範例
index當前元素索引(從 0 起算)int
iteration當前迴圈次數(從 1 起算)int
first是否為第一次迴圈bool
last是否為最後一次迴圈bool
show是否會顯示內容(受 {foreachelse} 影響)bool
total總迴圈次數(陣列長度)int

實戰範例:完整屬性展示

{foreach from=$variable key=key name=loop item=value}
    陣列長度:{$variable|@count}
索引(index):{$smarty.foreach.loop.index}
次數(iteration):{$smarty.foreach.loop.iteration}
首筆(first):{$smarty.foreach.loop.first}
尾筆(last):{$smarty.foreach.loop.last}
總數(total):{$smarty.foreach.loop.total}

{/foreach}

進階技巧:精準控制輸出筆數

常見需求:「只顯示前 5 筆新聞」。兩種寫法任選:

寫法一:使用 index(從 0 起算)

{foreach name=infolist from=$VIDEO_INFO_LIST item=infolist}
    {assign var=floor value=$smarty.foreach.infolist.index}
    {if $floor < 5}
        
  • {$infolist}
  • {/if} {/foreach}

    寫法二:使用 iteration(從 1 起算,更直觀)

    {foreach name=infolist from=$VIDEO_INFO_LIST item=infolist}
        {if $smarty.foreach.infolist.iteration <= 5}
            
  • {$infolist}
  • {/if} {/foreach}

    補充:直接在模板取得陣列長度

    不進入迴圈也能取得長度:

    {$myArray|@count}

    @ 修飾符表示對整個陣列操作而非單一元素。

    最佳實踐建議

    • 優先使用 name 屬性命名迴圈,避免巢狀迴圈變數衝突。
    • 邏輯判斷盡量用 iteration,語意更清晰。
    • 大量資料只需前幾筆時,考慮在 PHP 端先 array_slice 再傳給模板,效能更佳。
    1. 上一篇文章:
    2. 下一篇文章:
    Copyright © 程式碼之家 All Rights Reserved