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整理转载请注明
详细情况如下:
有二级比如:一级为 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整理转载请注明
·上一篇:PHPcookie跨文件夹不能用 >> ·下一篇:php产生随机数 >>