2012-04-22 69 views
1

我有一個Smarty數組,並且數組中的一些元素也是數組。我在這裏處理別人的代碼,我不得不在輸出中插入一些額外的位,所以我不能只循環訪問數組並輸出結果。從數組中的Smarty數組獲取數據

我正在使用的代碼是:

{foreach from=$setall item=item} 

        {if $item.req_type != 6} 
         {if $item.attr_value} 
         <div class="detailed_line" > 

          <p> 
           <label>{$item.name}</label> 
           {$item.attr_value|JView:$item.attr_id:$data->id:$item.type:$item.req_type} 
          </p> 
         </div> 
         {/if} 
     {/if} 
     {/foreach} 

所以,我可以用得到單一數值:

{$setall.5.attr_value} 

但是,如果一個值是另一個數組,然後我m不知道如何循環並輸出值。

這是我第一次進入Smarty模板,所以我甚至不知道從哪裏開始。

任何想法將受到感謝!

問候

安迪·雅各布斯


編輯:在回答下面periklis'回答:

感謝您的。我有一個微妙的變化,這個試了一下:

{foreach name = "loop" from=$setall.0 item="item" key="key"} 
     {if is_array($item)} 
     {foreach name = "inner_loop" from=$item item="inner_item" key="inner_key"} 
     Inner item:{$inner_item}<br /> 
     {/foreach}  
     {else} 
     Outer item:{$item}<br /> 
     {/if} 
     {/foreach}<br /> 

所以,對於初學者來說,我只是想輸出的主數組的第一個位置的陣列。這就是我得到:

http://j412.workinprogress.co.uk/component/jomdirectory/23-Friendship-Travel

您可以在這是默認的輸出上看到的數據。我需要做的是在setall數組中顯示一些值,然後是描述,然後是setall的其餘部分。

例如,如果你看目的地,你會發現這個記錄的第4個元素應該輸出「British Isles Europe」,但它只是說'數組'。

希望更有意義!

問候

安迪

+0

也許值實際上是 「陣列」,而不是一個數組?這是從輸出下方顯示的代碼中建議的。 – periklis 2012-04-23 12:28:57

+0

我不確定這是怎麼回事,因爲頂部的輸出是正確的,所以這個值必須是,例如,「不列顛羣島歐洲」的目的地。 – 2012-04-23 16:25:42

+0

你可以做一個你試圖在$ setall中打印的數組的var_dump嗎? – periklis 2012-04-23 19:23:01

回答

0

嘗試是這樣的:

{foreach name = "loop" from=$setall item="item" key="key"} 
    {if is_array($item)} 
     {foreach name = "inner_loop" from=$item item="inner_item" key="inner_key"} 
      Inner item:{$inner_item} 
     {/foreach}  
    {else} 
      Outer item:{$item} 
    {/if} 
{/foreach}