|
循环语句由 {?section name=i loop=$var columns=1?} 开头,{?/section?} 结束。
name=i 的 i 是循环时候的中间变量名(名称可以自由设置,不能和其他变量同名)。
loop=$var 的 $var 是实际内容数组。
columns=1 的 1 是指循环的时候分成几列,可以不写这部分,默认为一列。这个参数主要用于生成多行多列的 表格,当这个参数大于1的时候,程序会自动把循环次数补足成列的倍数。比如内容数组一共有6个值,默认循环六 次,如果要生成四列的表格,那么循环就会变成8次,这样正好生成4列2行的表格。
在实际使用中,name 后面的变量也会被转换成一个数组,在每次循环里面会相应赋值。如前面的写法,模板里面 变量标签是 $i 的一个数组,包含以下内容
固定参数部分:
$i['columns'] - 当前循环是几列的模式。
$i['count'] - 内容数组的单元个数
$i['addrows'] - 多列的时候,附加的循环次数
$i['loops'] - 总的循环次数
循环变量部分:
$i['key'] - 当前数组单元的键值。
$i['value'] - 当前数组单元内容
$i['index'] - 循环的内部序号,从0开始,逐个递增
$i['order'] - 循环的排序,从1开始,逐个递增
$i['row'] - 当前是第几行,从1开始
$i['column'] - 当前是第几列,从1开始
$i['append'] - 当前循环是不是附加循环,0 表示否,1 表示是
例子1:单列循环
---------------------------------------------------------------------
程序:
$var=array('a', 'b', 'c', 'd', 'e');
$jieqiTpl->assign('var', $var);
模板:
{?section name=i loop=$var?}
($var[$i['key']])
{?/section?}
输出:
(a)(b)(c)(d)(e)
备注:上面 $var[$i['key']],$i['value'] 这两种方式表达的值是一样的,另外兼容老版的表达方式 $var [i]
---------------------------------------------------------------------
例子2:多列循环w w w . x i a o s h u o g e . n e t 小说阁
---------------------------------------------------------------------
程序:
$var=array('a', 'b', 'c', 'd', 'e');
$jieqiTpl->assign('var', $var);
模板:
<table width="100%" border="1">
{?section name=i loop=$var columns=3?}
{?if $i['column'] == 1?}<tr>{?/if?}
<td>{?$i['order']?}.{?if $i['append'] == 0?}{?$var[$i['key']]?}{?else?} {?/if?}</td>
{?if $i['column'] == $i['columns']?}</tr>{?/if?}
{?/section?}
</table>
输出:
<table width="100%" border="1">
<tr>
<td>1.a</td>
<td>2.b</td>
<td>3.c</td>
</tr>
<tr>
<td>4.d</td>
<td>5.e</td>
<td>6. </td>
</tr>
</table>
备注:
{?section name=i loop=$var columns=3?} 开始循环,按照3列的模式生成
{?if $i['column'] == 1?}<tr>{?/if?} 每行开始第一列时候,前面加上 <tr> 标记
{?if $i['column'] == $i['columns']?}</tr>{?/if?} 每行到最后一列时候,后面加上 </tr> 标记
{?$i['order']?} 数字序号,从1开始递增
{?if $i['append'] == 0?}{?$var[$i['key']]?}{?else?} {?/if?} 如果不是附加字段,则直接输出内 容,否则输出
---------------------------------------------------------------------
|
|