Связанные массивы в Smarty

Ripley

Новичок
Связанные массивы в Smarty

Не получается правильно отобразить имя документа
из массива DOCUM, по ссылке из массива DATA.

Сами массивы:

PHP:
DOCUM = Array ( 
[0] => Array ( [ID] => 1 [DNAME] => Имя док 1 ) 
[1] => Array ( [ID] => 2 [DNAME] => Имя док 2 ) 
[2] => Array ( [ID] => 3 [DNAME] => Имя док 3 ) 
[3] => Array ( [ID] => 4 [DNAME] => Имя док 4 ) 
) 


DATA = Array ( 
[0] => Array ( [DOCID] => 4 ) 
[1] => Array ( [DOCID] => 3 ) 
[2] => Array ( [DOCID] => 2 ) 
[3] => Array ( [DOCID] => 1 )
)
Код:

PHP:
{foreach item=arrlist from=$DATA}
{$DOCUM[$arrlist.DOCID].DNAME}
{/foreach}
Вроде все должно работать, но не верно отображает.
Не догоню в чем дело. До этого пытался тоже самое
сделать через section, так там вообще :))

Подскажите в чем ошибка?
 

zerkms

TDD infected
Команда форума
попробовать вот так:
{$DOCUM.`$arrlist.DOCID`.DNAME}
если не сработает (не пробовал), то только через assign наверное
 

Ripley

Новичок
Упростить - низзя :) Точнее можно конечно, но считаем что низзя :) Вообщем без assign не получится наверное? А значит что foreach что section - без разницы.
 

Ripley

Новичок
Проблема уже решена, но за ответ спасибо. Попробовал, не работает, к сожалению.
 

SmartDiver

Новичок
изначально неправильный подход к организации массивов данных... нет понятия первичного ключа как мне кажется... надо было вынести его за пределы суб-массивов и все было бы хорошо... примерно так:
PHP:
$ID = Array (  
1 => Array ( 'DNAME' => 'Имя док 1' ),
2 => Array ( 'DNAME' => 'Имя док 2' ),
3 => Array ( 'DNAME' => 'Имя док 3' ),
4 => Array ( 'DNAME' => 'Имя док 4' )  
);

$DOCID = Array (  
	4,
	3,
	2,
	1 
);


$s = new Smarty;
$s->assign( 'ID', $ID );
$s->assign( 'DOCID', $DOCID );

$s->display( 'test.tpl' );
test.tpl:
{foreach item=a from=$DOCID}
{$ID.$a.DNAME}
{/foreach}
 

Ripley

Новичок
Рассуждения на тему правильности - могут перерасти в рассуждения о нужности этой правильности.

Давайте закроем тему.
 
Сверху