Smarty:在模板中取消设置数组索引

时间:2011-09-19 08:39:56

标签: php arrays templates smarty unset

我想{unset($array['index'])}进入Smarty 3模板。

是否支持这样的语法(或类似)?谷歌搜索和文档阅读后,我找不到令人满意的东西。

也许我应该向Smarty开发团队索要功能请求? :)

无论如何,鉴于目前可用的模板功能,您将如何做到这一点?

9 个答案:

答案 0 :(得分:5)

我不认为聪明的人会直接支持这一点。你总是可以用smarty的{php}标签来做这件事,但是我强烈反对你这样做。逻辑不属于演示级别模板。

答案 1 :(得分:3)

有一种方法: - )

{$array=$array|array_diff_key:(['index']|array_flip)}

即使在模板中执行此操作也不是一个好主意,有时可能会节省您的时间。

答案 2 :(得分:2)

试试这个

{$array.index = null}

答案 3 :(得分:1)

模板引擎背后的主要思想是,在解析视图之前,您可以执行所有加载,逻辑,取消设置等操作。话虽如此,您不应该在模板中取消设置数据,我很确定他们不会实现该功能请求。

我也不明白你为什么要取消设置一个聪明的变量:只是不要使用它,它就不会显示出来。

答案 4 :(得分:0)

我认为,您不应该这样,因为所有逻辑必须在代码中而不是在模板中。

但是你可以编写自己的修饰符http://www.smarty.net/docs/en/plugins.modifiers.tpl

答案 5 :(得分:0)

你不是要覆盖这个值吗?

{assign var="array" value=array()}
{$array['index']='1'}
{$array['index2']='2'}
{$array['index']=''}
{$array|print_r}

这对我来说很聪明< 3,不知道是否仍然有效,因为他们真的搞砸了。

答案 6 :(得分:0)

  

{assign var = $ array.index value = null)}

答案 7 :(得分:0)

两个步骤:

{$array.index = null}
{$array = $array|array_filter}

它可以在Smarty3中使用。

带有动态索引的示例:

{foreach $array as $item}
    {if $item.foo == 'bar'}
        <h1>{$item.text nofilter}</h1>
        {* unset item from array *}
        {$array[$item@key] = null}
        {$array = $array|array_filter}
        {break}
    {/if}
{/foreach}

{if $array}
    <ul>
    {foreach $array as $item}
        <li>{$item.text nofilter}</li>
    {/foreach}
    </ul>
{/if}

答案 8 :(得分:0)

{$array=$links.lists|array_diff_key:(['10']|array_flip)}
{$array|print_r}

这里10是一个数组索引。