Обратится к элементу массива в смарти

Korner

Новичок
Обратится к элементу массива в смарти

есть массив
$allworks = Array( '1' => 'название1',
'2' => 'название2',
'3' => 'название3',
);
есть
$alltree= Array( Array( '1', '1111', '1111' ), Array( '2', '2222', '22222' ), Array( '3', '333', '3333' ) );

передаю их в смарти
в шалоне обхожу $alltree
и для каждой итерации надо обратиться к $allworks и забрать значение по ключу.
так вот как обратится?
{foreach name=list from=$alltree item="entry"}
<h3>{$entry.2}:</h3>
{foreach name=list from=$allworks.$entry.0 item="entry2"}
<p>50<a href="#">{$entry2}</a></p>
{/foreach}
{/foreach}

конкретно $allworks.$entry.0 эта штука не работает.

помогите плс
 

alexhemp

Новичок
Ты массивом индексируешь массив.

У тебя в $entry уже элемент большего массива, используй просто

$entry.0
 

Korner

Новичок
$entry.0 это ключ для массива $allworks
надо выбрать элемент из массива $allworks с ключом $entry.0
 

alexhemp

Новичок
У вас первый foreach

{foreach name=list from=$alltree item="entry"}


$alltree - это массив массивов

$entry - тоже массив.

Его нельзя использовать в качестве индекса, как вы делаете
в выражении $alltree.$entry

Нельзя массив индексировать массивом!
 

Panchous

Павел
присвой сначала значение ключа переменной $key (через assign)
а потом $allworks.$key
 

Korner

Новичок
дык $key то все время меняется, как же я его через assign присвою
нужно для каждой итерации цикла с $alltree получить ключ, и с этим ключом обратиться к массиву $allworks.
по аналогии
$allworks[ $alltree[$i][0] ]
вот надо обратится к этому, но в смарти.

можно ли в смарти в цикле задавать значение переменной и потом подставлять ее ключом в другой массив?
 
Сверху