网站制作学习网PHP→正文:phpsmart二维数组嵌套
字体:

phpsmart二维数组嵌套

PHP 2009/12/18 8:27:26  点击:不统计


在用smart做php页面的时候出现了二级类的smart数组嵌套,怎么在smart输出嵌套内容.
详细情况如下:
有二级比如:一级为 id name   二级为 id Father_id name
要在smart中输出所有分类,要分开级别,并将二级级别放到父级别下.
如果用 常规的php直接写一个循环即可输出即
<?php
$sql="select id,name from 一级表";
$resault = mysql_query($sql);
$num=mysql_num_rows($resault);
if($num>0)
{ while($rows=mysql_fetch_array($resatul))
  {echo  $rows["name"];//输出一级类名
   $sql1="select id,father_id,name from 二级表 where Father_id =".$rows['id'];
   $resault1 = mysql_qurey($sql1);
   $num1 = mysql_num_rows($resault);
     if($num1>0)
       { while($rows1=mysql_fetch_array($resault1))
           {
          echo $rows1["name"];
            }
        }
  }
}
?>
以上循环输出 一级类,二级类(所属父类)
但是在smart模板中怎么输出呢,查询网络总结了两种方法,一种是将二级类作为一级类的一个参数,一种是将二级类数组作为独立参数,将父类id放在二级类数组,通过判断来输出.
第一种是 将二级类作为父类的一个参数
<?php
$sql="select id,name from 一级表";
$resault = mysql_query($sql);
$num=mysql_num_rows($resault);
if($num>0)
{ while($rows=mysql_fetch_array($resatul))
  {//首先选出所属子类的数组
   $sql1="select id,father_id,name from 二级表 where Father_id =".$rows['id'];
   $resault1 = mysql_qurey($sql1);
   $num1 = mysql_num_rows($resault);
     if($num1>0)
       { while($rows1=mysql_fetch_array($resault1))
           {
          $二级临时数[]= array('id'=>$rows1['id'],'name'=>$rows1['name']);
            }
        }
   $父类数组[] = array('id'=>$rows['id'],'name'=>$rows['name'],'san_array'=>$二级临时数组);//san_array为父类数组的第三个参数,也就是子类数组
    unset($二级临时数);//清空临时数组
  }
}//foraspcn
?>
在smart中(以"<{"和}>"作为模板格式,下面的也是)输出格式如下
网站制作学习网www.forasp.cn整理
<{section name=loop loop = $父类数组}>
<{$父类数组[loop].name}> 这里输出父类名称
     <{section name=loop1 loop = $父类数组[loop].san_array}>
      <{$父类数组[loop].san_array[loop1].name}> //输出二级类名称
     <{/section}>
<{/section}>
第二中是将二类放到一个数组,并将父类放到二类中的一个参数
<?php
$sql="select id,name from 一级表";
$resault = mysql_query($sql);
$num=mysql_num_rows($resault);
if($num>0)
{ while($rows=mysql_fetch_array($resatul))
  {$父类数组[] = array('id'=>$rows['id'],'name'=> $rows["name"]);//输出一级类名
   $sql1="select id,father_id,name from 二级表 where Father_id =".$rows['id'];
   $resault1 = mysql_qurey($sql1);
   $num1 = mysql_num_rows($resault);
     if($num1>0)
       { while($rows1=mysql_fetch_array($resault1))
           {
         $二级数组[] = array('father_id'=>$rows1['father_id'],'id'=>$rows('id'),'name'= $rows1["name"]);
            }
        }
  }
}
?>
在smart中输出如下:
<{section name=loop loop = $父类数组}>
    <{$父类数组[loop].name}> 输出父类
    <{section name = loop1 loop = $二级数组}>
    <{if  $二级数组[loop1].father_id == $父类数组[loop].id}>
          <{$二级数组[loop1.]name}>//输出二级数组
    <{/if}>
    <{/section}>
<{/section}>
从上面看来,第一个更为合理,第二个多了一步判断.www.forasp.cn整理转载请注明

http://%77%77%77%2E%66%6F%72%61%73%70%2E%63%6E

·上一篇:PHPcookie跨文件夹不能用 >>    ·下一篇:php产生随机数 >>
推荐文章
最新文章