smartyのforeachでのindex

recipe-312959_640

画像を表示して、その下に登録している画像の枚数分のリンクを表示させる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などがありますが、また使う機会があれば書こうと思います。

スポンサーリンク
レクタングル(大)
レクタングル(大)

シェアする

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

フォローする