Smarty: как ссылаться на ассоциативный индекс массива
Array $imagelist:
Array (
[additional] => Array (
[count] => 2
[image] => Array (
[nokia_e61_1.jpg] => Array (
[name_body] => nokia_e61_1
[name_ext] => jpg
)
[nokia_e61_2.jpg] => Array (
[name_body] => nokia_e61_2
[name_ext] => jpg
)
[nokia_e61_3.jpg] => Array (
[name_body] => nokia_e61_3
[name_ext] => jpg
)
[nokia_e61_4.jpg] => Array (
[name_body] => nokia_e61_4
[name_ext] => jpg
)
)
)
[main] => nokia_e61
)
значение nokia_e61_1.jpg
хранится в {$getvars.imagename}
.
я писал {$imagelist.additional.image.`$getvars.imagename`.name_body}
но это не работает.
пожалуйста, помогите.
4 ответов
мне не нравится smarty для этого, тем не менее я использую его. Вот выписка из формы документации
{$foo.$bar} <-- display variable key value of an array, similar to PHP $foo[$bar]
чтобы быть в состоянии сделать это, вы должны
{assign var='key' value=$getvars.imagename}
{$imagelist.additional.image.$key.name_body}
надеюсь, что это помогает
Реструктурируйте массив, ключи для внутреннего смещения "изображений" в любом случае избыточны:
$imagelist = array('additional' => array('count' => 2,
'image' => array(
array('name_body' => 'nokia_e61_1',
'name_ext' => 'jpg'),
array('name_body' => 'nokia_e61_2',
'name_ext' => 'jpg'),
array('name_body' => 'nokia_e61_3',
'name_ext' => 'jpg'),
array('name_body' => 'nokia_e61_4',
'name_ext' => 'jpg')
)
),
'main' => 'nokia_e61'
);
дает вам численно индексированные изображения:
array(2) {
["additional"]=>
array(2) {
["count"]=>
int(2)
["image"]=>
array(4) {
[0]=>
array(2) {
["name_body"]=>
string(11) "nokia_e61_1"
["name_ext"]=>
string(3) "jpg"
}
[1]=>
array(2) {
["name_body"]=>
string(11) "nokia_e61_2"
["name_ext"]=>
string(3) "jpg"
}
[2]=>
array(2) {
["name_body"]=>
string(11) "nokia_e61_3"
["name_ext"]=>
string(3) "jpg"
}
[3]=>
array(2) {
["name_body"]=>
string(11) "nokia_e61_4"
["name_ext"]=>
string(3) "jpg"
}
}
}
["main"]=>
string(9) "nokia_e61"
}
//and then the smarty bit
{$imagelist.additional.image[0].name_body}
{$imagelist.additional.image[1].name_body}
{$imagelist.additional.image[2].name_body}
{$imagelist.additional.image[3].name_body}