最好是在取数据的时候构造,而不是在smarty里想办法。比如 一、 取数据的时候。 假设数据里字段为id ,datawhile($arr=mysql_fetch_assoc($result)) { $info[]=$arr; }smarty里写为:<!-- BEGIN info --> {id} {data} <!-- END info -->这时候就已经循环显示了。二、也可以处理多维数组。 比如。在上面的$info里。增加一个字段,data_2 ,同时data_2是数组,包含了id,data_2两个字段。那么smarty里写为: <!-- BEGIN info --> {id} {data} <!-- BEGIN data_2 --> {id} {data_2} <!-- END data_2 --> <!-- END info -->
我比较喜欢用这样的方式。php $result = mysql_query("SELECT id, name FROM mytable"); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $datas[] = $row; }$smarty->assign('data',$datas); $smarty->display('test.html');test.html{section name = i loop = data} {$data[i].id} {$data[i].name} {/section}一般是放在table里面
一、
取数据的时候。
假设数据里字段为id ,datawhile($arr=mysql_fetch_assoc($result))
{
$info[]=$arr;
}smarty里写为:<!-- BEGIN info -->
{id} {data}
<!-- END info -->这时候就已经循环显示了。二、也可以处理多维数组。
比如。在上面的$info里。增加一个字段,data_2 ,同时data_2是数组,包含了id,data_2两个字段。那么smarty里写为:
<!-- BEGIN info -->
{id} {data}
<!-- BEGIN data_2 -->
{id} {data_2}
<!-- END data_2 -->
<!-- END info -->
$datas[] = $row;
}$smarty->assign('data',$datas);
$smarty->display('test.html');test.html{section name = i loop = data}
{$data[i].id} {$data[i].name}
{/section}一般是放在table里面
id: {$curr_id}<br>
{/foreach}
http://oss.org.cn/man/develop/php/Smarty-2.6.0-docs-zh-CN/manual/language.function.foreach.html
$DataArr=array("1"=>array("1"=>"a","2"=>"b"),"2"=>array("1"=>"c","2"=>"d"));把这个数据传给Smarty模板后:
<table border="1">
{foreach from=$DataArr key=j item=Data}
<tr>
<td>第{$j}行
</td>
<td>{$Data.1}
</td>
<td>{$Data.2}
</td>
</tr>
{/foreach}
</table>结果显示:
第1行 a b
第2行 c d