Показать второй слой массива на основе первого ключа с помощью SMARTY

У меня проблемы с отображением следующего массива в таблицу. Идея состоит в том, чтобы отображать данные по горизонтали на основе первого массива, но к 2-му массиву также следует обращаться и отображать горизонтально.

Массив (я изменил массив для целей отображения):

    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, но я не могу правильно отобразить детали.

Кто-нибудь знает, как с этим бороться?

-1

Решение

Попробуйте зациклить ключи первого массива, а затем снова каждый из них

{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}
0

По вопросам рекламы [email protected]