foreach 是除 section 之外處理循環(huán)的另一種方案(根據(jù)不同需要選擇不同的方案)。 foreach 用于處理簡(jiǎn)單數(shù)組(數(shù)組中的元素的類(lèi)型一致),它的格式比 section 簡(jiǎn)單許多,缺點(diǎn)是只能處理簡(jiǎn)單數(shù)組。 foreach 必須和 /foreach 成對(duì)使用,且必須指定 from 和 item 屬性。 將 from 屬性指定的數(shù)組中的數(shù)據(jù)遍歷處理到 item 屬性指定的變量中。 參考 foreach (array_expression as $key => $value) from <=> array_expression;item <=> $value;key <=> $key。 name 屬性可以任意指定(字母、數(shù)字和下劃線的組合)。 foreach 可以嵌套,但必須保證嵌套中的 foreach 名稱唯一。 from 屬性(通常是數(shù)組)決定循環(huán)的次數(shù)。 foreachelse 語(yǔ)句在 from 屬性沒(méi)有值的時(shí)候被執(zhí)行。(from 屬性所指定的值為空時(shí),可用 foreachelse 語(yǔ)句指定——否則-干什么) foreach 循環(huán)有自己的變量名,使用該變量名可以訪問(wèn)該循環(huán). 使用方法為 {$smarty.foreach.foreachname.varname},其中 foreachname 即在 foreach 中指定的 name 屬性。 foreach 演示 {* 該例將輸出數(shù)組 $custid 中的所有元素的值 *} 復(fù)制代碼 代碼如下:
{foreach from=$custid item=curr_id} id: {$curr_id}<br> {/foreach} 輸出結(jié)果: id: 1000 id: 1001 id: 1002 foreach 鍵的演示和嵌套的演示 {* 數(shù)組定義如下: 復(fù)制代碼 代碼如下:
$smarty->assign("contacts", array(array("phone" => "1", "fax" => "2", "cell" => "3"), array("phone" => "555-4444", "fax" => "555-3333", "cell" => "760-1234"))); *} {* 鍵就是數(shù)組的下標(biāo),請(qǐng)參看關(guān)于數(shù)組的解釋 *} {foreach name=outer item=contact from=$contacts} {foreach key=key item=item from=$contact} {$key}: {$item}<br> {/foreach} {/foreach} 輸出結(jié)果: phone: 1 fax: 2 cell: 3 phone: 555-4444 fax: 555-3333 cell: 760-1234 .index index 包含當(dāng)前數(shù)組索引,從"0"開(kāi)始 例如: 復(fù)制代碼 代碼如下:
<table> {foreach from=$items key=myId item=i name=foo} {if $smarty.foreach.foo.index % 5 == 0} {* $smarty.foreach.foo.index 對(duì) 5 求余 *} <tr><th>Title</th></tr> {/if} <tr><td>{$i.label}</td></tr> {/foreach} </table> .iteration iteration 包含當(dāng)前循環(huán)的執(zhí)行次數(shù),總是從 1 開(kāi)始,每執(zhí)行一次自加 1。 例如: 復(fù)制代碼 代碼如下:
{* 輸出 0|1, 1|2, 2|3, ... 等等 *} {foreach from=$myArray item=i name=foo} {$smarty.foreach.foo.index}|{$smarty.foreach.foo.iteration}, {/foreach} .first 當(dāng)前 foreach 循環(huán)第一次執(zhí)行時(shí) first 被設(shè)置成 true。 例如: 復(fù)制代碼 代碼如下:
{* 當(dāng)循環(huán)第一次執(zhí)行時(shí)顯示 LATEST , o 否則顯示 id *} <table> {foreach from=$items key=myId item=i name=foo} <tr> <td>{if $smarty.foreach.foo.first}LATEST{else}{$myId}{/if}</td> <td>{$i.label}</td> </tr> {/foreach} </table> .last 當(dāng)前 foreach 循環(huán)執(zhí)行到最后一遍時(shí) last 被設(shè)置成 true. 例如: 復(fù)制代碼 代碼如下:
{* 在列表最后添加水平線 *} {foreach from=$items key=part_id item=prod name=products} <a href="#{$part_id}">{$prod}</a>{if $smarty.foreach.products.last}<hr>{else},{/if} {foreachelse} ... content ... {/foreach} .total total 用于顯示循環(huán)執(zhí)行的次數(shù),可以在循環(huán)中或循環(huán)執(zhí)行后調(diào)用. 例如: 復(fù)制代碼 代碼如下:
{* 在最后顯示行數(shù) *} {foreach from=$items key=part_id item=prod name=foo} {$prod.label}<hr/> {if $smarty.foreach.foo.last} <div id="total">{$smarty.foreach.foo.total} items</div> {/if} {foreachelse} ... something else ... {/foreach} |
|
來(lái)自: 明天網(wǎng)吧 > 《smarty》