индекс массива smarty

#php #arrays #indexing #smarty

#php #массивы #индексирование #smarty

Вопрос:

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

 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. Я не PhP-программист, но разве это не хэш, а не массив?

2. @Mimisbrunnr хэш-таблицей в PHP называется массив 😉

3. Вы имеете в виду хэш-таблицу? В PHP нет хэш-таблиц, как в JAVA. Однако массив — это своего рода хэш-таблица, не так ли?

Ответ №1:

Вы должны создать ключ, прежде чем обращаться к нему в массиве. Используйте 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_ .