2014-09-23 272 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