模板标签 {loop} 和 {foreach} 有什么区别?怎么写带序号的循环?

已解决 提问于 2026-10-25 提问者:超级管理员 13 次阅读

看模板里有时写 loop 有时写 foreach,还有 {$i} 这种序号,规则是什么?

回答(1)

已采纳最佳答案
  • 2026-10-25 回答 最佳答案

    两者完全等价,只是写法不同,团队里挑一个统一即可。

    {loop $list as $item}…{/loop}
    {foreach $list as $item}…{/foreach}
    
    <!-- 带序号($i 从 0 开始)-->
    {loop $list as $i => $item}
      <span>{$i}</span> {$item.title}
    {/loop}

    几条必须记住的规矩:

    1. {loop} / {foreach} 自带结束,不要再写 {/if}——多写一个会编译出错;
    2. 循环自带空值保护,列表为空整段不输出;
    3. 取数组值用点号:{$a.b.0.c} 也支持;
    4. {if} 不保护未定义变量,判断前用 {if !empty($x)};
    5. 输出标签不支持算术,过滤器参数只能写死的数字或文字。

    常用过滤器:|limit=20 截断、|date=Y-m-d 时间、|thumb=400,260 缩略图、|raw 原样输出 HTML(富文本必须加)。

写回答

该问题已解决,不再接受新的采纳。