考虑用foreach
生成一个类似这样的二维数组: $array['栏目标题']['栏目下的分类']='子栏目标题'
第一维的key为主栏目标题,第二维的key为主栏目下的各个分类。
这样foreach出来,第一层输出key,第二层输出value.
类似:
{foreach item=firstKey from=$array key=key}
{$key}<!--输出主栏目-->
{foreach item=$catValue from=$firstKey key=key2}
{$catValue}<!--输出子栏目标题-->
{/foreach}
{/foreach}

解决方案 »

  1.   

    嵌套循环获得该分类下的所有信息for($i=0;$i<count($new_lanmu);$i++){ $arrary[] = arrary($new_lanmu[$i][......]);
    $arrary_news = 'SELECT * from 新闻表 WHERE 新闻分类 = $new_lanmu[$i][新闻分类]';
    for($j=0;$j<count($arrary_news);$j++){
    /*把新闻和他所属的分类关联上*/
    $新闻分类id = $new_lanmu[$i][新闻分类]; $arrary2[$新闻分类id][] = arrary($arrary_news[$j][......]);
    }}$smarty->assign("columns", $array);
    $smarty->assign("news", $array2);
    $smarty->display('index.tpl');
    在index.tpl中
    <!--{section name=columnsid  loop=$columns}-->//这里获得所有板块栏目<table width="200" border="1"><!--{section name=newsid  loop=$news[$columns[columnsid].新闻分类]}-->//这里获得相应新闻
      <tr>
        <td>
    $news[$columns[columnsid].新闻分类][newsid].title 
    $news[$columns[columnsid].新闻分类][newsid].author
    $news[$columns[columnsid].新闻分类][newsid].content
    $news[$columns[columnsid].新闻分类][newsid].hits</td>
      </tr>
    <!--{/section}--></table><!--{/section}-->没有具体测试 ,大意如此