2014-09-23 170 views
1

我不知道如何在smarty中循环我的数组,我已阅读文档,但有些原因,我只是可以把它正确的。我有一个数组的数组。第一个是“类别”,在类别中有数据的数组。嵌套数组如何正确使用smarty foreach(循环循环)

现在我想显示所有的类别名称与所有的项目,使用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 
           ) 

         ) 

       ) 

     ) 

和IM这样做:

{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... 我该怎么做?

//编辑内容更新LOOP

{foreach from=$catAddons key=k item=i} <!-- ?? loop --> 
    {$k} : {$i} 
    {foreach from=$i key=k item=i} <!-- Group loop --> 
    {$k} {$i} 
    {/foreach} 
{/foreach} 

这一个显示所有组的数据..但随后插件这样表示附加组件:数组...但我不知道如何循环这个循环中

+0

您使用的智者x或3 x? 3.x语法更容易... – 2014-09-23 21:22:26

+0

2.6.3 ...我不能升级它不是我的网站 – 2014-09-23 21:25:11

+0

好吧,只是发现它根本不工作...它显示的类别名称是实际[0]从数组中,所以它不会循环 – 2014-09-23 21:33:26

回答

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} 
+1

我最终在foreach构建中做了一些奇怪的部分...但它的工作..谢谢! – 2014-09-23 22:11:55

+0

耶!有时嵌套的数据结构可能是一个真正的PITA ... – 2014-09-23 22:12:45