2016-10-07 6 views
-1

次の配列をテーブルに表示する際に問題があります。この考え方は、最初の配列に基づいてデータを水平に表示することですが、2番目の配列にもアクセスして水平に表示する必要があります。SMARTYで最初のキーに基づいて配列の2番目のレイヤを表示

配列(Iは、表示目的のために配列を逆転させた):

Array ( 
    [3] => Array ( 
     [name] => Joop 
     [details] => Array ( 
         [length] => 184 
         [weight] => 86 
         ... 
        ) 
     [year] => 1984 
     [university] => Harvard 
     [class_id] => 37 
     [group_id] => 14 
     ) 
    [2] => Array ( 
     [name] => Tim 
     [details] => Array ( 
         [length] => 169 
         [weight] => 74 
         ... 
        ) 
     [year] => 1977 
     [university] => MIT 
     [class_id] => 37 
     [group_id] => 14 
     ) 
    [1] => Array ( 
     [name] => Kelly 
     [details] => Array ( 
         [length] => 164 
         [weight] => 51 
         ... 
        ) 
     [year] => 1982 
     [university] => MIT 
     [class_id] => 37 
     [group_id] => 14 
     ) 
    [0] => Array ( 
     [name] => Alex 
     [details] => Array ( 
         [lenght] => 172 
         [weight] => 79 
         ... 
        ) 
     [year] => 1979 
     [university] => Harvard 
     [class_id] => 37 
     [group_id] => 14 
     ) 

私は次のようにHTMLテーブルに表示したい:

Name | Joop | Tim | Kelly | Alex 
Length | 184 | 169 | 164 | 172 
weight | 86 | 74 | 51 | 79 
... 
... 
Year | 1984 | 1977 | 1982 | 1979 
university | Harvard | MIT | MIT | Harvard 

私はと私のテンプレートの内側にそれを試してみましたforeachとloopの組み合わせですが、詳細部分を正しく表示できません。

いずれにも手掛かりがありますか?

答えて

0

はループに最初の配列のキーを試してみて、再度以下のように

{foreach $arr.0 as $row=>$wathever} 
<tr><td>{$row}</td> 
{foreach $arr as $col} 
<td>{$col.$row}</td> 
{/foreach} 
</tr> 
{/foreach} 
0

それらの一つ一つは、解決策を見つけた:

{foreach key=key item=item from=$arr}<th>{$item.name}</th> 
{/foreach} 
{foreach item=item key=key from=$arr.0.details} 
    <tr><td>{$key}</td> 
    {section name=arrloop loop=$arr} 
    <td>{$arr[arrloop].details.$key}</td> 
    {/section} 
    </tr> 
{/foreach} 
関連する問題