smarty foreach詳細說明_PHP教程

來源:互聯網
上載者:User

smarty foreach詳細說明


關於smarty foreach的知識,這裡對其作用和用法做一個詳細的說明。

smarty {foreach} 用於像逐一查看一個數字索引數組一樣逐一查看一個關聯陣列,與僅能訪問數字索引數組的{section}不同,{foreach}的文法比{section}的文法簡單得多,但是作為一個折衷方案也僅能用於單個數組。每個{foreach}標記必須與關閉標記{/foreach}成對出現。

smarty foreach 有如下屬性:

屬性名稱 Type類型 Required必要 Default預設值 Description描述
from array數組 Yes必要 n/a 逐一查看的數組
 
item string字串 Yes必要 n/a 當前元素的變數名
 
key string字串 No可選 n/a 當前鍵名的變數名
 
name string字元 No可選 n/a 用於訪問foreach屬性的foreach迴圈的名稱
 

foreach 是除 section 之外處理迴圈的另一種方案(根據不同需要選擇不同的方案).

foreach 用於處理簡單數組(數組中的元素的類型一致),它的格式比 section 簡單許多,缺點是只能處理簡單數組.

foreach 必須和 /foreach 成對使用,且必須指定 from 和 item 屬性.

name 屬性可以任意指定(字母、數字和底線的組合).

{foreach}迴圈的name可以是任何字母,數組,底線的組合,參考PHP變數。

{foreach}迴圈可以嵌套,嵌套的{foreach}的名稱應當互不相同。

from屬性通常是值數組,被用於判斷{foreach}的迴圈次數。

在from變數中沒有值時,將執行{foreachelse}。

{foreach}迴圈也有自身屬性的變數,可以通過{$smarty.foreach.name.property}訪問,其中"name"是name屬性。

注意:name屬性僅在需要訪問{foreach}屬性時有效,與{section}不同。訪問未定義name的{foreach}屬性不會拋出一個錯誤,但將導致不可預知的結果。

smarty {foreach} 除了以上屬於參數的屬性外還有幾個非參數形式的屬性:index, iteration, first, last, show, total ,下面一一說明:

屬性名稱 Description描述
index 用於訪問當前foreach的索引值,index總是從0開始
iteration

iteration 用於顯示當前迴圈的執行次數,iteration 總是從 1 開始,每執行一次增加 1

first 當前 foreach 迴圈第一次執行時 first 被設定成 true
 
last 當前 foreach 迴圈執行到最後一遍時 last 被設定成 true
 
show show 是 foreach 的一個參數. 取值為布爾值 true 或 false. 如果指定為 false 該迴圈不顯示,如果迴圈指定了 foreachelse 子句,該子句顯示與否也取決於 show 的取值
total total 用於顯示迴圈執行的次數,可以在迴圈中或迴圈執行後調用
 

下面看幾個例子分別說明 smarty foreach 各屬性的用法:

(1)示範item和key屬性

$arr = array(9 => 'Tennis', 3 => 'Swimming', 8 => 'Coding');
$smarty->assign('myArray', $arr);
?>

用模板按鍵名/索引值對的形式輸出$myArray, 類似於PHP的foreach。


    {foreach from=$myArray key=k item=v}
  • {$k}: {$v}

  • {/foreach}

     
上例將輸出:


  • 9: Tennis

  • 3: Swimming

  • 8: Coding

 (2)當foreach的item屬性是關聯陣列時

$items_list = array(
    23 => array('no' => 2456, 'label' => 'Salad'),
    96 => array('no' => 4889, 'label' => 'Cream')
);
$smarty->assign('items', $items_list);
?> 
  
模板中,url通過$myId輸出$items


    {foreach from=$items key=myId item=i}
  • {$i.no}: {$i.label}

  • {/foreach}

  
上例將輸出:


  • 2456: Salad

  • 4889: Cream

(3)foreach使用嵌套的item和key

向Smarty設定一個數組,對於每個鍵名對應的每個迴圈值都包括鍵。

  $smarty->assign('contacts', array(
                             array('phone' => '1',
                                   'fax' => '2',
                                   'cell' => '3'),
                             array('phone' => '555-4444',
                                   'fax' => '555-3333',
                                   'cell' => '760-1234')
                             ));
?>
  
用於輸出$contact的模板。

{foreach name=outer item=contact from=$contacts}
 


 {foreach key=key item=item from=$contact}
  {$key}: {$item}

 {/foreach}
{/foreach}
  
上例將輸出:
 

 phone: 1

 fax: 2

 cell: 3


 phone: 555-4444

 fax: 555-3333

 cell: 760-1234
 
  
(4)smarty foreach index 屬性用法

{* 每五行輸出一次頭部區塊 *}








{foreach from=$items key=myId item=i name=foo}  {if $smarty.foreach.foo.index % 5 == 0}       {/if}  {/foreach}
Title
{$i.label}

(5)smarty foreach iteration 屬性用法

{* 該例將輸出0|1, 1|2, 2|3, ... 等等 *}
{foreach from=$myArray item=i name=foo}
{$smarty.foreach.foo.index}|{$smarty.foreach.foo.iteration},
{/foreach}

(6)smarty foreach first 屬性用法

{* 對於第一個條目顯示LATEST而不是id *}








{foreach from=$items key=myId item=i name=foo}     {/foreach}
{if $smarty.foreach.foo.first}LATEST{else}{$myId}{/if}{$i.label}

(7)smarty foreach last 屬性用法

{* 在列表結束時增加一個水平標記 *})
{foreach from=$items key=part_id item=prod name=products}
  {$prod}{if $smarty.foreach.products.last}{else},{/if}
{foreachelse}
  ... content ...
{/foreach}

(8)smarty foreach show 屬性用法

show是{foreach}的參數. show是一個布爾值。如果值為FALSE,{foreach}將不被顯示。如果有對應的{foreachelse},將被顯示。

(9)smarty foreach total 屬性用法

{* 在結束位置顯示行數 *}
{foreach from=$items key=part_id item=prod name=foo}
{$prod.name>


{if $smarty.foreach.foo.last}
  {$smarty.foreach.foo.total} items
{/if}
{foreachelse}
 ... something else ...
{/foreach}

ok,關於 smarty foreach 就總結這麼多了,更多關於smarty的知識,請參照本站:smarty知識專題

您可能感興趣的文章

  • array_walk 和 foreach, for 的效率的比較,php效能最佳化
  • 關於使用in_array() foreach array_search() 尋找數組是否包含時的效能對比
  • smarty模板中for迴圈的擴充外掛程式
  • smarty include file 使用變數的方法
  • php在數組中尋找某個值是否存在(in_array(),array_search(),array_key_exists())
  • smarty模板中使用php函數以及smarty模板中如何對一個變數使用多個函數
  • select into from 和 insert into select 的區別和用法
  • Fatal error Class 'ZipArchive' not found ...... 的解決辦法

http://www.bkjia.com/PHPjc/976850.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/976850.htmlTechArticlesmarty foreach詳細說明 關於smarty foreach的知識,這裡對其作用和用法做一個詳細的說明。 smarty {foreach} 用於像逐一查看一個數字索引數組一樣...

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.