Smartyでassignを使わずに{foreach}のfromにキー(年)を指定したい
[2016] => Array
(
[0] => hoge
[1] => fuga
)
[2015] => Array
(
[0] => hoge
[1] => fuga
)
上記のような連想配列$rowsがあるとします。
これを{foreach}でキー(2016,2015)毎に実行したいのですが、
2016,2015は別々に表示させたい。
{foreach from=$rows[2016] item="row"}
{$row}
{/foreach}
{foreach from=$rows[2015] item="row"}
{$row}
{/foreach}
この2016(今年)と2015(去年)をうまく書くことはできないでしょうか。
↓は2015の方がうまくいかない。
{assign var="thisYear" value=$smarty.now|date_format:"%Y"}
{foreach from=$rows[$thisYear] item="row"}
{$row}
{/foreach}
{foreach from=$rows[$thisYear-1] item="row"}
{$row}
{/foreach}
年くらいassignなしでやりたい
↓は、まーエラーですよね。
{foreach from=$rows[$smarty.now|date_format:"%Y"] item="row"}
{$row}
{/foreach}
あまり綺麗とは言えないが、
foreach をネストし、ifを使えば出来る。
{foreach from=$rows key="year" item="row"}
{if $year === $smarty.now|date_format:"%Y"}
{foreach from=$row item="value"}
{$value}
{/foreach}
{/if}
{/foreach}
{foreach from=$rows key="year" item="row"}
{if $year === $smarty.now|date_format:"%Y"-1}
{foreach from=$row item="value"}
{$value}
{/foreach}
{/if}
{/foreach}
もう少しスマートに書けないでしょうか。
初歩的なことかもしれませんがご教授お願いします。