2012-04-22 17 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} 

しかし、値のいずれかが別の配列であるならば、私は」それをループして値を出力する方法がわからない。

これは私の最初の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

+0

私はそれがトップの出力が正しいのでどのようになるのか分からないので、その値は目的地のために例えば 'British Isles Europe'でなければなりません。 –

+0

$ setallで印刷しようとしている配列のvar_dumpを実行できますか? – periklis

答えて

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} 
関連する問題