ecmall模板标签数组遍历foreach,foreachelse,第一次循环,最后一次循环,循环次数,循环索引
说明:
foreach 用于处理简单数组(数组中的元素的类型一致)。
foreach 必须和 /foreach 成对使用,且必须指定 from 和 item 属性。
foreach 可以嵌套,但必须保证嵌套中的 foreach 名称唯一。
foreachelse 语句在 from 变量没有值的时候被执行。
from 属性:指定被循环的数组,数组长度决定了循环的次数。
item属性:单个循环项目的变量名,在循环内部使用。
name 属性为可选属性,可以任意指定(字母、数字和下划线的组合)。
name 属性如果指定,foreach循环体内会自动生成如下变量
$smarty.foreach.foreach_name.index表示本次循环索引,从0开始递增的整数
$smarty.foreach.foreach_name.iteration表示本次的循环次数,从1开始递增的整数
$smarty.foreach.foreach_name.first表示是否是第一次循环
$smarty.foreach.foreach_name.last表示是否是最后一次循环
$smarty.foreach.foreach_name.show表示是否有数据
$smarty.foreach.foreach_name.total表示循环总次数,也可在循环体外使用
实例1
模板代码:
{* 该例将输出数组 $custid 中的所有元素的值 *}
{foreach from=$custid item=curr_id}
id: {$curr_id}<br>
{/foreach}
输出结果为:
id: 1000<br>
id: 1001<br>
id: 1002<br>
实例2
复制内容到剪贴板代码:
/* 在对应的控制器中赋值 */
$this->assign("contacts", array(
array("phone" => "1", "fax" => "2", "cell" => "3"),
array("phone" => "555-4444", "fax" => "555-3333", "cell" => "760-1234")
));模板代码:
{* 键就是数组的下标,请参看关于数组的解释 *}
{foreach name=outer item=contact from=$contacts}
{foreach key=key item=item from=$contact}
{$key}: {$item}<br>
{/foreach}
{/foreach}
输出结果为:
phone: 1<br>
fax: 2<br>
cell: 3<br>
phone: 555-4444<br>
fax: 555-3333<br>
cell: 760-1234<br>
模板代码:
{* 最后一行不显示<br>标签 *}
{foreach name=outer item=contact from=$contacts name=my_name}
{foreach key=key item=item from=$contact}
{$key}: {$item}{if !smarty.foreach.my_name.last}<br>{/if}
{/foreach}
{/foreach}
输出结果为:
phone: 1<br>
fax: 2<br>
cell: 3<br>
phone: 555-4444<br>
fax: 555-3333<br>
cell: 760-1234