一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

smarty循环嵌套之几个实例详

时间:2013-10-27 编辑:简简单单 来源:一聚教程网

利用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处理文件输出三维数组代码如下:

 代码如下 复制代码
 $brand_spaces = array();
 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一次循环一样,就很好理解了。

热门栏目