在以下场景中访问smarty中的关联数组元素有什么问题?

时间:2014-07-22 12:54:02

标签: arrays smarty associative-array smarty2

我遵循我已分配给smarty模板的数组标题$ value。

 Array
        (
            [id] => 175
            [start_date] => 2014-07-01
            [end_date] => 2014-07-31
            [count] => 3
            [rebate_type_id] => 2
            [created_at] => 1406031299
            [updated_at] => 1406031299
            [applicable_states] => Array
                (
                    [0] => Array
                        (
                            [state_id] => 0
                            [rebate_id] => 175
                            [state_name] => All States
                        )

                )
            [manufacturer_id] => 49
            [company_name] => Blue Nun
            [manufacturer_image_path] => 
        )

为了访问内部数组元素,我编写了以下代码,但它不起作用。你能否纠正我在下面的代码中犯的错误?

{if $value.appplicable_states.0.state_name == 'All States'}
                  All States
                {/if}

2 个答案:

答案 0 :(得分:2)

在PHP中你做了这样的任务(我简化了数组):

$data= array('applicable_states' => array(0 => array('state_name' => 'All States')));
$smarty->assign('value',$data);
在Smarty中你可以使用:

{if $value.applicable_states.0.state_name =='All States'}
All States
{else}
Not All States
{/if}

输出为:

  

所有国家

答案 1 :(得分:0)

自从我聪明起来已经有一段时间了,但我认为您需要首先将数组分配给变量才能访问数组的元素:

{assign var=states value=$value.appplicable_states}
{$states[0].state_name}

或更有可能:

{assign var=states value=$value.appplicable_states}
{foreach from=$states item=state}
    {$state.state_name}
{/foreach}