Php 隐藏在循环中的Smarty值

Php 隐藏在循环中的Smarty值,php,recursion,smarty,Php,Recursion,Smarty,我有以下smarty结构(我已经删除了不必要的检查和可视化): deepscan结构的注释如下(我删除了不必要的检查和可视化): 在某些示例中,调用了[1]和[2]行,因此,$vip_comments如下所示: Array ( [10446] => 1 ) 但是,当循环完成时,第[3]行给了我一个空数组。我认为,$vip_comments在深度扫描循环中是不可见的,因此它创建了一个新的空数组并将数据推送到内部。 我曾尝试像这样将其作为参考传递(但不起作用): 如何在[4]行的$vip_c

我有以下smarty结构(我已经删除了不必要的检查和可视化):

deepscan结构的注释如下(我删除了不必要的检查和可视化):

在某些示例中,调用了[1]和[2]行,因此,$vip_comments如下所示:

Array ( [10446] => 1 )
但是,当循环完成时,第[3]行给了我一个空数组。我认为,$vip_comments在深度扫描循环中是不可见的,因此它创建了一个新的空数组并将数据推送到内部。 我曾尝试像这样将其作为参考传递(但不起作用):


如何在[4]行的$vip_comments数组中推送元素?

如果您没有说明您使用的是哪个smarty版本,请尝试在smarty 3中使用“scope”更改包含模板的范围

我还将看一看{function}:,它是一个更好的解决方案

如果您使用的是smarty 2,我认为这是做不到的


但是,请注意smarty是一个面向表示的模板系统,而且(即使可以实现)在php中处理数据和创建数组的所有逻辑操作都更快、更可取。

Hi Borgtex-我已经尝试了{function},效果很好。我不能将这些逻辑移到网站的PHP部分,因为我只能访问系统的视图部分。非常感谢。
{foreach from=$comments item=comment}
    {if $comment.access_level == 5}
        [1] {$vip_comments[$vip_id] = true}
        [2] {$vip_comments|print_r:true}
        {break}
    {/if}
    {include file="layouts/comments_deepscan.htm" show_only=$comment.id vip_id=$vip_id}
{/foreach}
Array ( [10446] => 1 )
{include file="layouts/comments_deepscan.htm" show_only=$comment.id vip_id=$comment.id vip_comments=&$vip_comments}
{include file="layouts/comments_deepscan.htm" scope=parent ... }