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;" > <!-- 显示 block --> <{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" > <!-- blue-table style="width:6000px;" style="width:90%;" style="table-layout:fixed; " --> <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}> <!-- 第0行 --> <{if $smarty.foreach.col_name.index eq 0}> <!-- 第0列 工作项目 style="width:200px;" --> <th class="col-11" style="width:100px;" ><{$val}></th> <{else if $smarty.foreach.col_name.index eq 1}> <!-- 第1列 办事处 style="width:100px;"--> <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}> <!-- 第1行 style="min-width:30px;"--> <{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-C</option> <option value='Usb'>Usb</option> </select> </td> </tr>
效果图