A-A+
smarty模板–foreach循环二维数组
因为单位商城的项目,所以最近又玩起了ecshop开源程序,做PHP的应该知道,Ecshop开源程序用的是smarty框架,用了许久的tk框架之后,突然觉得smarty生疏了许多,不过好在也是程序模板分离的,简单温习了一下之后就开始上手了,而最开始遇到的二维数组的循环问题。
先是在PHP层把数据库中的内容读取了出来,而这是一个二维数组,然后需要在模板层把这个内容给循环读取出来,查了一些资源,终于解决了,现把相关的代码给贴出来,这种 foreach 循环二维数组应用的还是比较广的,代码如下:
- <?php
- require_once './libs/Smarty.class.php';
- // $title="你好";
- $arr=array('a'=>'北京','b'=>'上海','c'=>'天津');
- $arr1=array(array('哈尔滨','上海'),array('北京','天津'));
- $arr2=array(array('a'=>'北京','b'=>'上海','c'=>'天津'),array('c'=>'c北京','d'=>'d上海','c'=>'天津'));
- $emplist=array(array('id'=>100,'name'=>"小明","age"=>40),array("id"=>'110',"name"=>"大明","age"=>80),array("id"=>111,"name"=>"中明","age"=>60));
- $smarty = new Smarty();
- $smarty->assign("arr",$arr);
- $smarty->assign("arr1",$arr1);
- $smarty->assign("arr2",$arr2);
- $smarty->assign("emplist",$emplist);
- $smarty->assign("if",5);
- $smarty->display("text.tpl");
- ?>
- .tpl 页面
- <br/><h1>*从from中取出数组指向temp*</h1><br/>
- {foreach from=$arr item=temp key=lx}
- {$lx}={$temp}
- {/foreach}
- <br/><h1>***取出二维数组***</h1><br/>
- {foreach from=$arr1 item=temp}
- {foreach from=$temp item=val}
- {$val}
- {/foreach}<br/>
- {/foreach}
- <br/><h1>***取出二维关联数组***</h1><br/>
- {foreach from=$arr2 item=temp}
- {foreach from=$temp item=val key=lx}
- {$lx}={$val}
- {/foreach}<br/>
- {/foreach}
- {foreach from=$emplist item=temp}
- {foreach from=$temp item=val key=lx}
- {if $lx!=age}
- {$lx}={$val}
- {/if}
- {/foreach}<br/>
- {/foreach}
- <br/><h1>***IF ELSE***</h1><br/>
- {if $if>10}
- a>10
- {else}
- a<10
- {/if}
- {foreach from=$emplist item=temp}
- {if $temp.age<50}
- 小孩{$temp.name}年龄为{$temp.age}<br/>
- {elseif 50<$temp.age&&$temp.age<70}
- 青年朋友{$temp.name}年龄为{$temp.age}
- {else}
- 老年朋友{$temp.name}年龄为{$temp.age}<br/>
- {/if}
- {/foreach}
其实也是蛮简单的,就是把二维数组给循环出来,然后再读取内容,这里仅为一个实例,如果是读数据库的话,也是一样的。