【www.bbyears.com--smarty模板】
利用foreach
smarty中section的嵌套用法,再用Smarty的循环foreach做个嵌套循环实例.
两个方法都很简单,关键是要构造好多维数组,然后循环的时候把相应的键名进行引用。。。是不是说得很模糊,看例子吧,不好解析,例子直观好看,先来看数组,引用原来文章的:
代码如下 $query = "SELECT id,name,name_cn FROM di_flag ORDER BY id desc";$result = mysql_query($query);
while($row = mysql_fetch_array($result))
{
$query2="SELECT id, name, name_cn,flag
FROM di_sort
WHERE di_sort.flag =$row[id]
ORDER BY id desc";
$result2=mysql_query($query2);
while($row2 = mysql_fetch_array($result2))
{
$post[]=array("sid"=>$row2["id"],
"sortname"=>$row2["name"],
);
}
$row_array[] = array("cid"=>$row["id"],
‘cat_name"=>$row["name"],
‘topic"=>$post
);
unset($post);
}
$smarty->assign("forum",$row_array);
unset($row_array);
很简单,以上是一个二维数组,然后再看如何嵌套循环,这回用foreach咯,看代码:
代码如下{foreach from=$forum ietm=value}
{$value.cat_name}
{foreach from=$value.topic ietm=value2}
利用section循环
一、PHP处理文件输出三维数组代码如下:
foreach ($category AS $key => $value)
{
$condition = " AND B.`regionid` = ".$regions->regionid." AND M.`levelid` = 1 AND B.`categoryid` =" .$value["categoryid"]." AND B.`ischecked` = 1";
//$resourceid = $value["categoryid"];
$brand = $brandspaces->FetchByCondition("5",$condition,"B.`sort` asc");
$brand_spaces[] = $brand;
}
//print_r($brand_spaces);
$smarty->assign("brand_spaces",$brand_spaces);
通过foreach循环查询符合条件的结果集,重组数组。
二、处理文件print_r输出的三维数组结果显示如下:
代码如下 Array(
[0] => Array
(
[0] => Array
(
[0] => 85
[id] => 85
[15] => php教程
[categoryname] => php教程
[16] => /u/342/logo/logo342.jpg
[logo] => /u/342/logo/logo342.jpg
[18] => php教程示例一
[title] => php教程示例一
)
[1] => Array
(
[0] => 410
[id] => 410
[15] => php教程
[categoryname] => php教程
[16] => /u/398/logo/logo398.jpg
[logo] => /u/398/logo/logo398.jpg
[18] => mysql数据库优化
[title] => mysql数据库优化
)
)
[1] => Array
(
[0] => Array
(
[0] => 9
[id] => 9
[15] => SEO优化
[categoryname] => SEO优化
[16] => /u/228/logo/logo228.gif
[logo] => /u/228/logo/logo228.gif
[18] => seo/seo.html" target="_blank">搜索引擎优化技巧
[title] => 搜索引擎优化技巧
)
[1] => Array
(
[0] => 494
[id] => 494
[15] => SEO优化
[categoryname] => SEO优化
[16] => /u/453/logo/logo453.gif
[logo] => /u/453/logo/logo453.gif
[18] => seo优化几大注意点
[title] => seo优化几大注意点
)
)
)
三、在模板文件通过smarty的section嵌套循环详细分析:
代码如下
1、$brand_spaces为assign名称,$brand_spaces 的长度为2,所以将loop=$brand_spaces与loop=2最后结果是一样的。loop为"决定循环次数的变量名称".
2、获取到三维数组最外层的循环并得到[categoryname]的value值
3、$brand_spaces[index]分解开为:$brand_spaces[1]和$brand_spaces[2]。
4、下面这个为获取到[logo]的value的值。
如果觉得上面的看不是很明显,为了便于理解,你也可以设一个变量:$brand=$brand_spaces[index];
即section内部循环为:
即获取[logo]的值为 ,这和平常我们写的section一次循环一样,就很好理解了。