умный индекс массива - PullRequest
2 голосов
/ 12 мая 2011

У меня есть массив

array('foo_1' => 1, 'bar_1' =>1, 'foo_2' => 2, 'bar_2' => 2, ... )

for($i = 1; $i<=12; $i++){
    echo $month['foo_'.$i];
}

И я не понимаю, как я могу получить к нему значения, используя Smarty.

{counter start=0 skip=1 assign="i"}
 {section name = month start = 0 loop = 12 step = 1}
  {if isset($arr.foo_.$i)}
   {$arr.bar_$i}
  {/if}
  {counter}
 {/section}

Но он не работает.Основная проблема - Как я могу получить доступ к массиву ['foo_1'] в Smarty?Можете ли вы помочь?

1 Ответ

2 голосов
/ 12 мая 2011

Вы должны создать ключ перед доступом к нему в массиве.Используйте assign для создания полного имени.

{assign var=fooKey value="foo_"|cat:$i}
{assign var=barKey value="bar_"|cat:$i}
{if isset($arr.{$fooKey})}
  {$arr.{$barKey}}
{/if}

Ваша попытка {$arr.foo_.$i} означает доступ к подразделу $i в массиве в $arr.foo_.

...