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

Smarty foreach 迴圈完整攻略:四大陣列類型遍歷實戰範例

     編輯:PHP 相關知識

Smarty 的 {foreach} 是模板中處理陣列資料的核心指令。本文提供四種最常見陣列結構——一維索引、一維關聯、二維索引、二維關聯——的完整 PHP 指派代碼與模板遍歷範例,並解析 item、key、巢狀迴圈等關鍵語法,助你快速掌握各類資料結構的輸出技巧。

PHP 端資料準備

<?php
require_once("./libs/Smarty.class.php");
$smarty = new Smarty();

// 一維索引陣列
$arr1 = array("北京","上海","廣州");
$smarty->assign("arr1",$arr1);

// 一維關聯陣列
$arr2 = array("city1"=>"北京","city2"=>"上海","city3"=>"廣州");
$smarty->assign("arr2",$arr2);

// 二維索引陣列
$arr3 = array(array("北京","上海","廣州"),array("關羽","張飛","美女"));
$smarty->assign("arr3",$arr3);

// 二維關聯陣列
$arr4 = array(array("c1"=>"北京","c2"=>"上海","c3"=>"廣州"),array("n1"=>"關羽","n2"=>"張飛","n3"=>"美女"));
$smarty->assign("arr4",$arr4);

$smarty->display("temp.tpl");
?>

模板端四大遍歷範例

實例 1:一維索引陣列

<p >實例1:一維索引陣列</p>
{foreach from=$arr1 item=temp}
    {$temp}
{/foreach}

item 取得每個元素值,索引陣列無需 key。

實例 2:一維關聯陣列

<p >實例2:一維關聯陣列——item為鍵值,key為鍵名</p>
{foreach from=$arr2 item=temp key=k}
    {$k}={$temp}
{/foreach}

關聯陣列建議同時使用 item(值)與 key(鍵名)。索引陣列的 key 為 0,1,2... 亦可取得。

實例 3:二維索引陣列

<p >實例3:二維索引陣列——兩次迴圈即可</p>
{foreach from=$arr3 item=temp}
    {foreach from=$temp item=value}
        {$value}
    {/foreach}<br />
{/foreach}

外層迴圈取得每一列(陣列),內層迴圈遍歷該列元素。

實例 4:二維關聯陣列

<p >實例4:二維關聯陣列——同樣兩次迴圈即可</p>
{foreach from=$arr4 item=temp}
    {foreach from=$temp item=value key=k}
        {$k}={$value}
    {/foreach}<br />
{/foreach}

外層同樣取得子陣列,內層可同時取得鍵名與值。

foreach 核心屬性速查表

屬性說明必要性
from要遍歷的陣列變數必填
item當前元素值的變數名必填
key當前元素鍵名的變數名選填(關聯陣列建議用)
name迴圈名稱,用於存取 $smarty.foreach.name.index 等屬性選填

進階技巧:存取迴圈元資訊

{foreach from=$arr1 item=val name=myloop}
    序號: {$smarty.foreach.myloop.index} (從 0 開始)
    計數: {$smarty.foreach.myloop.iteration} (從 1 開始)
    是否首項: {$smarty.foreach.myloop.first}
    是否末項: {$smarty.foreach.myloop.last}
    總筆數: {$smarty.foreach.myloop.total}
    {$val}
{/foreach}

善用 name 屬性可在迴圈中實現「首項不顯示分隔線」、「隔列換色」等常見 UI 需求。

總結

Smarty foreach 語法簡潔強大,掌握 item/key 搭配與巢狀迴圈,即可輕鬆處理任意維度陣列。實務建議:PHP 端將資料整理為標準化陣列結構,模板端專注單純遍歷輸出,避免在模板中進行複雜資料轉換邏輯。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved