- Published on
smartyのforeachでのindex
- Authors
- Name
- ネオ
- @neo_mypcmemo
- 1975年生まれのwebコーダー
画像を表示して、その下に登録している画像の枚数分のリンクを表示させるsmartyのコードです。忘れないようにメモしておきます。
{if $num == ''}
{assign var="num" value="1"}
{/if}
{assign var="num" value="\`$num-1\`"}
<img src="{$foo\[$num\]}" /><br />
foreach from="$myArray" item="foo" name="loop"}
{if $smarty.foreach.loop.index < 3 }
{if $num != $smarty.foreach.loop.index}
<a href="item.php?id={$myId}&num={$smarty.foreach.loop.iteration}">
{/if}
{$smarty.foreach.loop.iteration}{if $num != $smarty.foreach.loop.index}</a>{/if}
{/if}
{/foreach}
assign
assignは、テンプレート変数をテンプレート実行時に代入するもの。
assign var=“num” value=“1”
numという変数に1を代入しています。
foreach
foreachは連想配列をループします。smartyとかphpとかを始めた時にこのforeachがどういうことなのかを理解するのにものすごく苦労しましたが、初心者に説明しろと言われても未だにいまく説明できません。
{if $smarty.foreach.loop.index < 3 }
{if $num != $smarty.foreach.loop.index}
<a href="item.php?id={$myId}&num={$smarty.foreach.loop.iteration}">
{/if}
{$smarty.foreach.loop.iteration}{if $num != $smarty.foreach.loop.index}</a>{/if}
{/if}
index
今日忘れないように一番書いておきたいことが、このindex(インデックス)です。 配列をゼロから数えた値がこのインデックスです。
iteration
現在のループが反復された回数を表示するのがiteration(イテレーション)です。 indexとは異なり、常に1から始まります。各ループごとに1ずつ加算されます。
他にfirst、last、show、totalなどがありますが、また使う機会があれば書こうと思います。