其他分享
首页 > 其他分享> > smarty 中foreach 循环语句详解

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>

效果图

 

 

 

标签:index,name,smarty,循环,foreach,TRUE,详解
来源: https://www.cnblogs.com/hailexuexi/p/16361553.html