1. 程式人生 > >smarty 遍歷陣列之foreach,section例項

smarty 遍歷陣列之foreach,section例項

1、一維陣列

array (  
      "0" => 'home',  
      '1' => 'who',  
      '2'=> 'tank',  
      '3'=> 'what'  
     );  
    $this->tpl->assign("onearray", $this->onearray);

foreach來讀取

{foreach from=$onearray kkey=k item=value }  
    一維key={$k}  一維value={$value}<br />  
    {foreachelse}  
    nothing  
    {/foreach
} 顯示的結果是 一維key=0 一維value=home 一維key=1 一維value=who 一維key=2 一維value=tank 一維key=3 一維value=what

section來讀取

{section name=one loop=$onearray start=0 step=1}  
    index={$smarty.section.one.index},  
    index_prev={$smarty.section.one.index_prev},  
    index_next={$smarty.section
.one.index_next}, first={$smarty.section.one.first}, last={$smarty.section.one.last}, iteration ={$smarty.section.one.iteration}, total={$smarty.section.one.total}, value={$onearray[one]}<br /> {sectionelse} nothing {/section} 顯示的結果是 index=0
, index_prev=-1, index_next=1, first=1, last=, iteration =1, total=4, value=home index=1, index_prev=0, index_next=2, first=, last=, iteration =2, total=4, value=who index=2, index_prev=1, index_next=3, first=, last=, iteration =3, total=4, value=tank index=3, index_prev=2, index_next=4, first=, last=1, iteration =4, total=4, value=what

2、二維陣列

 array (  
      "test" => 'home',  
      '2' => 'who',  
      array (  
       "上海",  
       "born" => "安徽",  
       "name" => "海底蒼鷹"  
      ),  
      array (  
       "1583456",  
       "fax" => "12345678",  
       "cell" => "13256478414"  
      )  
     );  
    $this->tpl->assign("twoarray", $this->twoarray); 

foreach

 {foreach from=$twoarray kkey=k item=value }  
    {if is_array($value)}  
     {foreach from=$value key=tk item=tv }  
      二維tkey={$tk}  二維value={$tv}<br />  
     {foreachelse}  
      二維陣列為空  
     {/foreach}  
    {else}  
     一維key={$k}  一維value={$value}<br />  
    {/if}  

    {foreachelse}  
    nothing  
    {/foreach}  
    顯示結果如下:
    一維key=test 一維value=home
    一維key=2 一維value=who
    二維tkey=0 二維value=上海
    二維tkey=born 二維value=安徽
    二維tkey=name 二維value=海底蒼鷹
    二維tkey=0 二維value=1583456
    二維tkey=fax 二維value=12345678
    二維tkey=cell 二維value=13256478414

section

{section loop=$twoarray name=two }  
    {if is_array($twoarray[two])}  
     {section loop=$twoarray[two] name=aaa }  
      二維tkey={$smarty.section.aaa.index}  二維value={$twoarray[two][aaa]}<br />  
     {sectionelse}  
      二維陣列為空  
     {/section}  
    {else}  
     一維key={$smarty.section.two.index}  一維value={$twoarray[two]}<br />  
    {/if}  
    {sectionelse}  
    nothing  
    {/section}  
    顯示結果如下:
    一維key=0 一維value=
    一維key=1 一維value=
    一維key=2 一維value=who
    二維tkey=0 二維value=上海
    二維tkey=1 二維value=
    二維tkey=2 二維value=

如果是一維陣列,並且帶有下標的話,並且不是按0,1,2這樣的順序的話就取不到東西

 array (  
    array (  
     'name' => 'tank',  
     'sex' => '男',  
     'old' => '28'  
    ),  
    array (  
     'name' => 'joyce',  
     'sex' => '女',  
     'old' => '111'  
    )  
    ); 

section迴圈

    {section loop=$twoarray name=two}  
    name={$twoarray[two].name},sex={$twoarray[two].sex},old={$twoarray[two].old}
    {sectionelse}  
    nothing  
    {/section}
    顯示結果
    name=tank,sex=男,old=28
    name=joyce,sex=女,old=111