跳出与继续 Break Continue

跳出与继续 Break Continue

{break} 与 {continue} 用于在循环内部控制流程,分别对应 PHP 的 break; 与 continue;。

一、编译行为

标签 编译为 作用
{break} break; 立即终止整个循环
{continue} continue; 跳过本次迭代,进入下一次

两者都不接受参数(不支持 {break 2} 这类层级写法),均直接 emit 对应的 PHP 语句。

二、适用循环

可在 {foreach} / {list} / {category} 任一循环内使用(三者循环层同构,都编译为 foreach)。

三、典型用法

{foreach from=$list item=item}
    {if $item.status eq 0}
        {continue}   {* 跳过未发布项 *}
    {/if}
    {if $item@iteration > 10}
        {break}      {* 只显示前 10 条 *}
    {/if}
    <p>{$item.title}</p>
{/foreach}

上例中,{continue} 把状态为 0 的项跳过;{break} 在迭代序号超过 10 时提前结束循环。

四、与 limit 的取舍

  • 只是「取前 N 条」:优先用 {foreach ... limit=N}(或 {list ... limit=N}),在取数层面就限制,更高效;
  • 需要「按条件动态提前结束」或「跳过某些项」:才用 {break} / {continue}。

五、注意事项

  • {break} / {continue} 必须处于循环体内;在非循环上下文使用会编译出非法的 PHP(break 不在循环/switch 内),应避免。
  • 它们不影响循环元数据的 total(@total 仍为切片后的总数),只影响实际输出多少次。
添加日期: