Smarty Foreach 使用說明
更新時(shí)間:2010年03月23日 15:53:30 作者:
foreach 是除 section 之外處理循環(huán)的另一種方案(根據(jù)不同需要選擇不同的方案)。 foreach 用于處理簡(jiǎn)單數(shù)組(數(shù)組中的元素的類型一致),它的格式比 section 簡(jiǎn)單許多,缺點(diǎn)是只能處理簡(jiǎn)單數(shù)組。
foreach 是除 section 之外處理循環(huán)的另一種方案(根據(jù)不同需要選擇不同的方案)。 foreach 用于處理簡(jiǎn)單數(shù)組(數(shù)組中的元素的類型一致),它的格式比 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 語句在 from 屬性沒有值的時(shí)候被執(zhí)行。(from 屬性所指定的值為空時(shí),可用 foreachelse 語句指定——否則-干什么)
foreach 循環(huán)有自己的變量名,使用該變量名可以訪問該循環(huán). 使用方法為 {$smarty.foreach.foreachname.varname},其中 foreachname 即在 foreach 中指定的 name 屬性。
foreach 演示
{* 該例將輸出數(shù)組 $custid 中的所有元素的值 *}
{foreach from=$custid item=curr_id}
id: {$curr_id}<br>
{/foreach}
輸出結(jié)果:
id: 1000
id: 1001
id: 1002
foreach 鍵的演示和嵌套的演示
{*
數(shù)組定義如下:
$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"開始
例如:
<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 開始,每執(zhí)行一次自加 1。
例如:
{* 輸出 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。
例如:
{* 當(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.
例如:
{* 在列表最后添加水平線 *}
{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)用.
例如:
{* 在最后顯示行數(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}
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 語句在 from 屬性沒有值的時(shí)候被執(zhí)行。(from 屬性所指定的值為空時(shí),可用 foreachelse 語句指定——否則-干什么)
foreach 循環(huá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"開始
例如:
復(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 開始,每執(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}
您可能感興趣的文章:
- 使用Smarty 獲取當(dāng)前日期時(shí)間和格式化日期時(shí)間的方法詳解
- php Smarty date_format [格式化時(shí)間日期]
- smarty內(nèi)部日期函數(shù)html_select_date()用法實(shí)例分析
- 在smarty中調(diào)用php內(nèi)置函數(shù)的方法
- 在smarty模板中使用PHP函數(shù)的方法
- ThinkPHP使用smarty模板引擎的方法
- smarty半小時(shí)快速上手入門教程
- PHP詳細(xì)徹底學(xué)習(xí)Smarty
- Smarty結(jié)合Ajax實(shí)現(xiàn)無刷新留言本實(shí)例
- 解析smarty模板中類似for的功能實(shí)現(xiàn)
- 解決css和js的{}與smarty定界符沖突問題的兩種方法
- Smarty日期時(shí)間操作方法示例
相關(guān)文章
php smarty截取中文字符亂碼問題?gb2312/utf-8
一般網(wǎng)站頁面的顯示都不可避免的會(huì)涉及子字符串的截取,這個(gè)時(shí)候truncate就派上用場(chǎng)了,但是它只適合英文用戶,對(duì)與中文用戶來說,使用 truncate會(huì)出現(xiàn)亂碼2011-11-11Php Ctemplate引擎開發(fā)相關(guān)內(nèi)容
因?yàn)楣拘枰?,我們后面的?xiàng)目將采用Php Ctemplate引擎開發(fā)。在這里,我只是將我這一個(gè)月學(xué)習(xí)到的,和自己的理解寫出來。如果有不正確,或者描述不準(zhǔn)確的地方,希望大家能批評(píng)指出2012-03-03