ThinkPHP中foreach和volist的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThinkPHP中foreach和volist的区别相关的知识,希望对你有一定的参考价值。

参考技术A 1、foreach标签类似与volist标签,只是更加简单,没有太多额外的属性,例如:
$vo.id:$vo.name
name表示数据源
item表示循环变量。
代码示例:
<foreach name="list" item="vo" >
$key|$vo.id:$vo.name
</foreach>
2、volist标签通常用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数组,可以直接使用volist标签进行输出。在控制器中首先对模版赋值。
代码示例:
$User = M('User');
$list = $User->limit(10)->select();
$this->assign('list',$list);
模板代码:
<volist name="list" id="vo">
$vo.id:$vo.name<br/>
</volist>
支持输出查询结果中的部分数据,例如输出其中的第5~15条记录:
<volist name="list" id="vo" offset="5" length='10'>
$vo.name
</volist>
输出偶数记录:
<volist name="list" id="vo" mod="2" >
<eq name="mod" value="1">$vo.name</eq>
</volist>
3、volist还有其他一些功能,建议去查看thinkphp手册,里面很详细。

thinkphp5 - volist套层循环查询

// 查询fenlei表所有数据
$zbc = db(\'fenlei\')->select();
// 根据fenlei查询xiangmu表所有数据
foreach($zbc as&$v){
    // 根据本表id查询xiangmu表中对应aid的所有数据
    $v[\'zxc\'] = db(\'xiangmu\')->where([\'aid\'=>$v[\'id\']])->select();
}
$this->assign(\'zbc\',$zbc);

此方法根据fenlei表中的id来查询xiangmu表中aid与fenlei表中id相同的数据!

<ul>
    <!-- 显示所有项目名称 -->
    {volist name="zbc" id="vs"} 
    <li>
        <a href="javascript:;">{$vs.name}</a>    
        <ul>
          {volist name="vs.zxc" id="vd"}
            <li><a href="javascript:;">{$vd.name}</a></li>
          {/volist}
        </ul>
    </li>
    {/volist}
</ul>

{volist}套层关系:内层name沿用外层id作为开头,写成"vs.zxc"

结果如图所示:

以上是关于ThinkPHP中foreach和volist的区别的主要内容,如果未能解决你的问题,请参考以下文章

thinkphp使用foreach遍历的方法

thinkphp volist 排序问题

thinkphp中volist标签 增加if判断。

TP中循环遍历

thinkphp5 - volist套层循环查询

thinkphp5 - volist套层循环查询