访问一个数组,从一个函数发出的密钥导致smarty

时间:2012-03-06 15:03:39

标签: php smarty

我有一个$ period var,定义为:

Array
(
[2012-03-09] => Array
    (
        [3] => Array
            (
                [group] => 1
                [color] => #00FF00
            )

    )

[2012-03-07] => Array
    (
        [3] => Array
            (
                [group] => 2
                [color] => #00FF00
            )

    )
)

我使用smarty,如果密钥存在,我想打印值,然后迭代所有数据:

{if array_key_exists($jour->nameMysql(), $periods)}
    {foreach from=$periods[$jour->nameMysql()] item=periodsdf}
        {$periodsdf}
    {/foreach}
{/if}

键由函数 $ jour-> nameMysql()的结果返回。代码的第一部分正在工作(array_key_exists但foreach不起作用。它挂起,我没有错误消息或警告

我已经尝试通过 {foreach from =“$ periods。{$ jour-> nameMysql()}”item = periodsdf} 来改变foreach,但它不起作用。

我还尝试将$ jour-> nameMysql()分配给var并使用该var但它不起作用

你可以帮助我让它发挥作用吗?

修改

此代码提供我想要的结果

{php}
   $periods = $this->get_template_vars('periods');
   $jour = $this->get_template_vars('jour');
   $this->assign('period', $periods[$jour->nameMysql()]);
{/php}
{foreach from=$period item=per}
   <div style='color: {$per.color}'>{$per.group}</div>
{/foreach}

如果我找到了聪明的语法......那很好

谢谢

1 个答案:

答案 0 :(得分:0)

{$key = $jour->nameMysql()}
{if array_key_exists($key, $periods)}
    {foreach from=$periods.$key item=periodsdf}
        {$periodsdf}
    {/foreach}
{/if}

{if isset($periods.$key)}
    {foreach from=$periods.$key item=periodsdf}
        {$periodsdf}
    {/foreach}
{/if}
相关问题