私は次のスマートな構造を持っています(不要なチェックと視覚化を削除しました):
[4] {$vip_comments = array()}
{foreach from=$comments item=comment}
{include file="layouts/comments_deepscan.htm" show_only=$comment.id vip_id=$comment.id}
{/foreach}
[3] {$vip_comments|print_r:true}
Comments_deepscan構造は次のようになります(不要なチェックと視覚化を削除しました)。
{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}
いくつかの例では、[1]行と[2]行が呼び出されているため、$vip_commentsは次のようになります。
Array ( [10446] => 1 )
ただし、ループが終了すると、行[3]で空の配列が返されます。$ vip_commentsはディープスキャンループ内に表示されないため、新しい空の配列を作成し、データを内部にプッシュすると思います。私はそれをこのような参照として渡そうとしました(しかしそれは機能しません):
{include file="layouts/comments_deepscan.htm" show_only=$comment.id vip_id=$comment.id vip_comments=&$vip_comments}
行[4]の$vip_comments配列内の要素をプッシュする方法は?