1
我想将多维关联数组与值描述项目和项目组,并将其显示为列表。在使用Smarty的PHP应用程序中迭代Smarty模板中的多维关联数组
我做这样的事情在的script.php:
$data = array(
array(
'type' => 'group',
'name' => 'Group 1',
'items' => array(
array(
'type' => 'group',
'name' => 'Group 2',
'items' => array(
array(
'type' => 'item',
'name' => 'Item 1'
),
array(
'type' => 'item',
'name' => 'Item 2'
)
)
),
array(
'type' => 'item',
'name' => 'Item 3'
)
)
),
array(
'type' => 'item',
'name' => 'Item 4'
)
);
$smarty->assign('data', $data);
而且我用它在主模板文件:
{include file="display_data.tpl" data="$data"}
而且在display_data.tpl:
{if $data.type eq 'item'}
<li>{$data.name} ({$data.type})</li>
{elseif $data.type eq 'group'}
<li>
{$data.name} ({$data.type})
{include file="display_data.tpl" data=$data.items}
</li>
{else}
<ol>
{foreach from=$data key=k item=i}
{include file="display_data.tpl" data=$data[$k]}
{/foreach}
</ol>
{/if}
但效果只有:
<ol>
<li>Group 1 (group)</li>
<li>Item 4 (item)</li>
</ol>
以任何方式,我无法让它遍历内部'项目'数组。我究竟做错了什么?
在此先感谢您的帮助。
感谢您的答复。如果我们知道项目树的最大深度,就可以使用这种方法,如上面给出的例子。然而,我真正想要做但却无法实现的工作是处理树的任何深度 - 这就是使用递归模板的原因。关于这个问题的任何想法? – user485332 2012-02-06 09:02:29