Lists 循环
然后我们在模版中定义如下代码,循环输出名言标题和 IT 名人:
模板编译后的结果:
$index = 0;
$tmp = $list;
if (count($tmp) == 0):
echo "";
else:
foreach ($tmp as $key => $vo):
++$index;
$mod = $index % 2; ?>
<?php echo $vo->title; ?> <?php echo $vo->people; ?>
<?php endforeach;
endif;
else:
echo "";
endif; ?>
list 标签的 name 属性表示模板赋值的变量名称,因此不可随意在模板文件中改变。id 表示当前的循环变量,可以随意指定,但确保不要和 name 属性冲突。
部分输出
支持输出部分数据,例如输出其中的第 2~4 条记录
<lists name="list" id="vo" offset="2" length='4'>
{$vo.title} {$vo.people}
</lists>
模板编译后的结果:
<?php if (is_array($list)):
$index = 0;
$tmp = array_slice($list, 2, 4);
if (count($tmp) == 0):
echo "";
else:
foreach ($tmp as $key => $vo):
++$index;
$mod = $index % 2; ?>
<?php echo $vo->title; ?> <?php echo $vo->people; ?>
<?php endforeach;
endif;
else:
echo "";
endif; ?>
模板编译后的结果:
<?php if (is_array($list)):
$index = 0;
if (count($tmp) == 0):
echo "";
else:
foreach ($tmp as $key => $vo):
++$index;
<?php if ($mod == 1): ?>
<?php echo $vo->title; ?> <?php echo $vo->people; ?>
<?php endif; ?>
<?php endforeach;
endif;
else:
echo "";
endif; ?>
输出奇数记录
lists 还支持奇数记录的输出:
<lists name="arrList" id="arrVo" mod="2">
<?php if ($mod == 0) : ?>
{$arrVo.title} {$arrVo.people}
<?php endif; ?>
</lists>
模板编译后的结果:
<?php if (is_array($list)):
$index = 0;
$tmp = $list;
if (count($tmp) == 0):
echo "";
else:
foreach ($tmp as $key => $vo):
++$index;
$mod = $index % 2; ?>
<?php if ($mod == 0): ?>
<?php echo $vo->title; ?> <?php echo $vo->people; ?>
<?php endif; ?>
<?php endforeach;
endif;
else:
echo "";
endif; ?>
奇数记录和偶数记录规定如下,我们以数组的 0 为开始,0、2、4为偶记录,其它的都为基数记录。
mod 属性还用于控制一定记录的换行,例如:
<?php if (is_array($list)):
$index = 0;
$tmp = $list;
if (count($tmp) == 0):
echo "";
else:
++$index;
$mod = $index % 2; ?>
<?php echo $vo->title; ?> <?php echo $vo->people; ?>
<br>
<?php endif; ?>
<?php endforeach;
endif;
else:
echo "";
endif; ?>
输出循环变量
我们在模版中写下如下的代码:
<lists name="arrList" id="vo" index="k">
{$k} {$vo.people}
</lists>
模板编译后的结果:
<?php if (is_array($list)):
$k = 0;
$tmp = $list;
if (count($tmp) == 0):
echo "";
else:
foreach ($tmp as $key => $vo):
++$k;
$mod = $k % 2; ?>
<?php echo $k; ?> <?php echo $vo->people; ?>
<?php endforeach;
endif;
else:
echo "";
endif; ?>
如果要输出数组的索引,可以直接使用 key 变量,和循环变量不同的是,这个 key 是由数据本身决定,而不是循环控制的,这个 key 可以通过 key 属性指定。
例如:
模板编译后的结果:
<?php if (is_array($list)):
$index = 0;
$tmp = $list;
if (count($tmp) == 0):
echo "";
else:
foreach ($tmp as $key => $vo):
++$index;
$mod = $index % 2; ?>
key: <?php echo $key; ?>
<?php endforeach;
endif;
else:
endif; ?>