ThinkPHP模板中if用标签(如)支持eq/neq/gt/lt等比较符,foreach用{foreach}或{volist}标签,后者更适配数据库查询并支持空值提示、分页等。

ThinkPHP模板中写 if 和 foreach 很直接,但要注意语法和变量写法与原生 PHP 有区别——它用的是模板引擎自定义标签,不是直接写 PHP 代码。
if 判断怎么写
模板里不支持 ==、> 这类运算符,得用内置比较标签或 <if></if> 标签。
- 用
<if></if>标签(推荐):条件写在condition属性里,支持点语法、系统变量和函数
<if condition="$user eq 'admin'">欢迎管理员</if>
- 支持
<elseif></elseif>和<else></else>
<if condition="$status eq 1">已启用<elseif condition="$status eq 0"></elseif>已禁用<else></else>状态未知</if>
立即学习“PHP免费学习笔记(深入)”;
- 常用比较符:eq(等于)、neq(不等)、gt(大于)、lt(小于)、egt(≥)、elt(≤)、heq(全等)
- 也可以用
<eq name="user" value="admin"></eq>这类单标签,配合<else></else>
foreach 循环怎么写
对应 PHP 的 foreach ($arr as $k => $v),模板里用 {foreach} 标签,变量名必须和控制器传入的模板变量一致。
- 基础写法(只取值):
{foreach $list as $item}{$item.name}{/foreach} - 带键名写法:
{foreach $list as $key => $vo}{$key}: {$vo.title}{/foreach} - 注意:模板中变量前要加
$,但name属性里不用(如 volist 的name="list")
volist 更适合查数据库返回的数据集
如果数据来自 Db::select() 或模型查询,推荐用 {volist},更贴合 ThinkPHP 风格,还支持分页、空值提示等:
- 基本用法:
{volist name="list" id="vo"}{$vo.id} - {$vo.title}{/volist} - 空数据提示:
{volist name="list" id="vo"}...{/volist}{empty name="list"}暂无数据{/empty} - 控制输出条数:
{volist name="list" id="vo" offset="2" length="5"}...(跳过前2条,取5条) - 隔行判断:
{volist name="list" id="vo" mod="2"}{if $vo.mod eq 1}偶数行{else}奇数行{/if}{/volist}
嵌套使用很常见
比如列表带子项,可多层 {volist} 或混用:
{volist name="categories" id="cat"}<h3>{$cat.name}</h3>{volist name="cat.posts" id="post"}{$post.title}{/volist}{/volist}- 注意内层
name写成cat.posts或cat['posts']都可以



















