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

Destoon 模板標籤實現自增序號從 1 開始:loop 迴圈計數器技巧

     編輯:PHP 相關知識

Destoon 模板中實現自增序號:從 {loop} 計數器到 PHP 變數注入的多種做法

Destoon 模板引擎的 {loop} 標籤支援計數器變數,但預設從 0 開始。需求常見:顯示排名、序號,需從 1 開始。本文詳解三種實現方式與避坑指南。

方法一:利用 loop 內建計數器 + PHP 運算(推薦)


{loop $tags $k $t}
    
  • {php echo $k + 1;} {$t[title]}
  • {/loop}

    原理: {loop $tags $k $t} 中 $k 為數值索引(0-based),直接在輸出處 {php echo $k + 1;} 即可,最簡潔、無副作用。

    方法二:預先在 PHP 區塊遞增變數

    
    {php $i = 0;}
    {loop $tags $t}
        {php $i++;}
        
  • {$i} {$t[title]}
  • {/loop}

    注意: {php} 區塊中的變數作用域為模板編譯後的 PHP 函數內部,$i 需在 {loop} 前初始化,迴圈內遞增。

    方法三:標籤呼叫時注入基礎偏移(分頁場景)

    若需支援分頁(第 2 頁從 11 開始),需在標籤參數傳入偏移:

    
    
    {php $offset = ($page - 1) * 10;}
    {loop $tags $k $t}
        
  • {php echo $offset + $k + 1;} {$t[title]}
  • {/loop}

    常見錯誤與修正

    錯誤寫法問題修正
    {loop $tags $i $t}{$i++}模板引擎不支援後綴運算符輸出,且 $i++ 回傳遞增前的值用 {php echo $i + 1;} 或 {php $i++; echo $i;}
    {loop $tags $i $t}imgUrl[{$i++}]同上,且 JS 陣列索引會跳號JS 端用 push() 或 PHP 端組好陣列再 json_encode
    直接用 {$k} 不加 1顯示 0, 1, 2... 不符合直覺{php echo $k + 1;}

    進階:CSS 計數器實現純前端序號(無需 PHP 運算)

    /* CSS */
    .rank-list {
        counter-reset: rank;
    }
    .rank-list li::before {
        counter-increment: rank;
        content: counter(rank) ". ";
        font-weight: bold;
        color: #e4393c;
    }
    
    /* 模板 */
    

    優點: 分頁、篩選、動態增刪皆自動正確,零後端計算,SEO 友善(內容結構不變)。

    總結建議

    1. 簡單列表: {php echo $k + 1;} 最直接
    2. 分頁列表: 計算 $offset + $k + 1
    3. 純展示、無需 SEO 索引序號: CSS counter 最優雅
    4. 需輸出 JS 陣列: PHP 端 array_values() 重建索引後 json_encode
    1. 上一篇文章:
    2. 下一篇文章:
    Copyright © 程式碼之家 All Rights Reserved