smarty 中foreach 循环语句详解
{foreach}循环也有自身属性的变量,可以通过{$smarty.foreach.name.property}访问,其中"name"是name属性。
<{foreach $items as $r name=row_name }>
.index包含当前数组索引,从零开始,每次循环增长1
<{if $smarty.foreach.row_name.index%2==0}>
这段是判断是否为 偶数 行
.iteration包含当前循环次数,与index不同,从1开始,每次循环增长1
<{$smarty.foreach.foo.iteration}>
.first在当前{foreach}循环处于初始位置时值为TRUE
<{if $smarty.foreach.row_name.first==true}>
这段是判断是否为 第一行
.last在当前{foreach}循环处于最终位置是值为TRUE
<{if $smarty.foreach.row_name.last==true}>
这段是判断是否为 最后行
常用 smarty 中 foreach 循环语句 示例
一、输出全表
<table id="table_excel" style="display:none;" > <{foreach $items as $r name=row_name}> <tr> <{foreach from=$r item=val name=col_name}> <th><{$val}>th> <{/foreach}> tr> <{/foreach}> table>
二、第一行变化样式
<table id="table_main" class="blue-table" > <caption style="color:#007979;font-size:18px;" >数据表caption> <{foreach $items as $r name=row_name}> <tr> <{foreach from=$r item=val name=col_name}> <{if $smarty.foreach.row_name.index eq 0}> <{if $smarty.foreach.col_name.index eq 0}> <th class="col-11" style="width:100px;" ><{$val}>th> <{else if $smarty.foreach.col_name.index eq 1}> <th class="col-11" style="width:80px;" ><{$val}>th> <{else}> <th class="col-11" style="width:80px;"><{$val}>th> <{/if}> <{else if $smarty.foreach.row_name.index eq 1}> <{if $smarty.foreach.col_name.index eq 0}> <th class="col-7" ><{$val}>th> <{else if $smarty.foreach.col_name.index eq 1}> <th class="col-7" ><{$val}>th> <{else }> <th class="col-7" ><{$val}>th> <{/if}> <{else }> <th class="col-7" > <{$val}> th> <{/if}> <{/foreach}> tr> <{/foreach}> table>
效果
三、判断列表中某个值是否满足条件,来变化样式
<{foreach $items as $r name=row_name}> <{if $r['is_display_list'] eq "是" }> <th field="<{$r['field_name']}>" width="<{$r['display_list_width']}>" align='center'><{$r['field_display_name']}>th> <{else }> <th field="<{$r['field_name']}>" hidden='true'><{$r['field_display_name']}>th> <{/if}> <{/foreach}>
四、输出多行两列
<{foreach $items as $r name=row_name }> <{if $smarty.foreach.row_name.index%2==0}> <tr> <{/if}> <td><label for="<{$r['id']}>" class="control-label"><{$r['field_display_name']}>:label>td> <td><{$r['html']}> td> <{if $smarty.foreach.row_name.index%2!=0}> tr> <{else}> <{if $smarty.foreach.row_name.last==true}> tr> <{/if}> <{/if}> <{/foreach}>
输出的html
<tr> <td><label for="" class="control-label">支持协议:label>td> <td><input type="text" class='my_input' name="agreement" id="agreement" /> td> <td><label for="" class="control-label">外观颜色:label>td> <td><select name="appearance_color" id="appearance_color" class="easyui-combobox" style="height:28px;width:160px;" editable=false ><option value='蓝色'>蓝色option> <option value='红色'>红色option> <option value='白色'>白色option> select> td> tr> <tr> <td><label for="" class="control-label">上市时间:label>td> <td><input type="text" class='my_input laydate-icon' style='height:29px;' onclick="laydate({istime: true, format: 'YYYY-MM-DD hh:mm:ss'})" readonly value="1970-01-01 07:33:42" name="market_time" id="market_time" /> td> <td><label for="" class="control-label">产品等级:label>td> <td><select name="grade" id="grade" class="easyui-combobox" style="height:28px;width:160px;" editable=false ><option value='普通款'>普通款option> <option value='一级品'>一级品option> <option value='特级品'>特级品option> select> td> tr> <tr> <td><label for="" class="control-label">支持接口:label>td> <td><select name="interface" id="interface" class="easyui-combobox" style="height:28px;width:160px;" editable=false > <option value='Type-C'>Type-Coption> <option value='Usb'>Usboption> select> td> tr>
效果图