thinkphp模板输出三维数组问题

thinkphp模板输出三维数组问题,第1张

<volist name="sort" id="vo">
{$voname}<br>
<volist name="vo['browse']" id="sub">
{$subnames}
</volist>
</volist>

传参数过去。

例如上图,volist就是循环,a里面的href就是跳转地址,每一个a标签都是跳转到lists方法,后面的category就是参数,在lists方法里面接受category参数然后输出对应的内容

在使用ThinkPHP的volist标签时,单重循环是比较常用的,但有时候需要用到多重嵌套循环。

方法步骤:

Action代码:
public function index(){
$prod = I("getprod_en");
$id = I("getid", 0, "int");
if ($prod == ""){
$serviceProduct = array();//多重循环遍历的数组
//数据保存在两张表中,这里通过循环初始化$serviceProduct数组
$service = M("product_class")->order("oid ASC")->select();
for ($i = 0; $i < count($service); $i++)
{
array_push($serviceProduct, array("srvName"=>$service[$i]["pc_cn"], "product"=>M("product")->where("prod_class_id="$service[$i]["pcid"])->order("oid ASC")->select()));
}
//如果要在模板中输出变量,必须在在控制器中把变量传递给模板,系统提供了assign方法对模板变量赋
值,无论何种变量类型都统一使用assign赋值。
$this->assign("serviceProduct", $serviceProduct);
$this->display();
}else{
if ($id > 0){
$this->display("detail");
}else{
$this->assign('prod_en', $prod);
$clsList = M("question_class")->order("oid ASC")->select();
$this->assign('clsList', $clsList);
$qusList = M("question")->order("oid ASC")->select();
$this->assign('qusList', $qusList);
$this->display("list");
}
}

模板代码:

<volist name="serviceProduct" id="sp" key="i">
<dl class="dlist odd">
<dt>{$spsrvName}</dt>
<volist name="spproduct" id="pd" key="j">
<dd><a href="/indexphp/questionprod_en={$pdprod_en}">{$pdprod_cn}</a></dd>
<if condition="$j lt count($sp['product'])">
<dd>|</dd>
</if>
</volist>
<if condition="count($sp['product']) EQ 0">
<dd>&nbsp;</dd>
</if>
</dl>
</volist>

当使用多重嵌套循环时,需要为每一个volist指定key值,通过

<if condition="$j lt count($sp['product'])">

判断是否为数组中的最后一个元素。

<foreach name="list" item="v">

  <foreach name="vchildren" item="vv">
    
</foreach>
</foreach>

类似这种结构就行了。

不建议楼主那样在模块中进行查询,最后在模型或者控制器中把需要的数据获取到,模块中只负责输出。不然MVC的意义就不大了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13356317.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-20
下一篇 2023-07-20

发表评论

登录后才能评论

评论列表(0条)

保存