我无法弄清楚如何在smarty中循环我的数组,我已经阅读了文档,但有些原因我可以把它弄好。
我有一个数组中的数组。第一个是"类别"在类别中有数据的数组。
现在我想使用smarty显示所有类别名称及其中的项目。我的数组看起来像这样:
Array
(
[catAddons] => Array
(
[0] => Array
(
[id] => 25
[name] => this is a addon group name
[group_categoryid] => 295
[group_description] =>
[group_optiontype] => single
[group_sort] => 0
[addons] => Array
(
[0] => Array
(
[addon_id] => 47
[addon_group_id] => 25
[addon_name] => bla
[addon_priceoption] => paid
[addon_purchaseprice] => 1.00
[addon_price] => 2.00
[addon_sort] => 0
)
[1] => Array
(
[addon_id] => 48
[addon_group_id] => 25
[addon_name] => nbalba
[addon_priceoption] => free
[addon_purchaseprice] => 0.00
[addon_price] => 0.00
[addon_sort] => 0
)
)
)
)
我正在这样做:
{foreach from=$catAddons.0 key=k item=i}
{$k} : {$i}
{if $k eq 'addons'}
{foreach from=$i.addons item=v}
{$v}
{/foreach}
{/if}
{/foreach}
第一个$& $ i显示"类别的数据"这是有效的。但现在我想循环[addons]的内容,但第二个循环没有显示任何内容。当我删除if语句时,它会显示Warning: Illegal string offset 'addons' in...
我怎么能这样做?
//编辑更新的循环
{foreach from=$catAddons key=k item=i} <!-- ?? loop -->
{$k} : {$i}
{foreach from=$i key=k item=i} <!-- Group loop -->
{$k} {$i}
{/foreach}
{/foreach}
这个显示所有组的数据..但是然后插件显示像这样的Addons:Array ...但我不知道如何在循环中循环它
答案 0 :(得分:0)
要在Smarty中循环关联数组,请使用以下语法:
{foreach from=$assoc_arr key=k item=i}
{$k} : {$i}
{/foreach}
要遍历数字索引(非关联)数组,请使用以下命令:
{foreach from=$num_arr item=i}
{$i}
{/foreach}
因此,如果您混合使用数字和关联数组,则必须相应地深入研究它们:
{foreach from=$catAddons item=x} <!-- numerically-indexed array -->
{foreach from=$x key=k item=i} <!-- associative array -->
<p>key: {$k} => item: {$i}</p>
{if $k eq 'addons'} <!-- access a nested array -->
{foreach from=$i item=ix} <!-- numerically-indexed array -->
{foreach from=$ix key=k2 item=v} <!-- associative array -->
<p>k2: {$k2} => value: {$v}</p>
{/foreach}
{/foreach}
{/if}
{/foreach}
{/foreach}