二.遍历循环 ThinkPHP 内置标签提供了 Volist 标签、Foreach 标签和 For 标签。 //给模版传一个数据库数据 $user = M('User'); $this->assign('data', $user->select()); $this->display(); Volist 标签:通常用于查询数据集的结果输出,通过 select()方法返回的是一个二 维数组,可以直接使用 volist 标签进行输出。 <ul> <volist name="data" id="arr"> <li>{$arr.id} -- {$arr.user} -- {$arr.mail}</li>
</volist> </ul>
PS:这里的 name="data"中的 data 是控制器给模版定义的数据变量,要对应;这里的 id="arr"中的 arr 是将要遍历循环的数组名,可以自定义。 //offset 从第几条开始,起始值 0,length 共多少条 <volist name="data" id="arr" offset="5" length="10"> <li>{$arr.id} -- {$arr.user} -- {$arr.mail}</li> </volist> //mod 求当前余数,当前 index 除以 2 余 1,输出偶数 <volist name="data" id="vo" mod="2"> <eq name="mod" value="1"> <li>{$vo.id} -- {$vo.user} -- {$vo.mail}</li> </eq> </volist>
//没有数据的情况下使用 empty 填充 <volist name="data" id="vo" empty="没有任何数据"> <li>{$vo.id} -- {$vo.user} -- {$vo.mail}</li> </volist> //empty 属性不支持 HTML 直接输入,但可以通过变量输出 $this->assign('empty', '<span style="color:red">没有任何数据</span>'); <volist name="data" id="vo" empty="$empty"> //通过 key 输出循环遍历的变量 <volist name="data" id="vo" key="k"> <li>{$k} -- {$vo.id} -- {$vo.user} -- {$vo.mail}</li> </volist>
//没有指定 k,也可以用 i 变量输出 <li>{$i} -- {$vo.id} -- {$vo.user} -- {$vo.mail}</li> //key 变量,可以直接输出索引值,从 0 开始 <li>{$key} -- {$vo.id} -- {$vo.user} -- {$vo.mail}</li> Foreach 标签和 Volist 标签类似,只不过 Foreach 标签更加简单,没有额外属性。 //只支持 key 属性,但{$key}变量支持 <ul> <foreach name="data" item="vo"> <ul>{$vo.id} -- {$vo.user}</ul>
</foreach> </ul> For标签就是简单的循环标签。 //从 1 到 99 循环 <for start="1" end="100"> {$i}<br /> </for> 除了start和end必须值,还有三个可选值。comparison是大于还是小于,默认值为lt(<) ;name是循环变量名,默认值为i;step是步进值,默认为1。 //完整形式 <for start="1" end="100" comparison="lt" step="2" name="k"> {$i}<br /> </for>