Smarty foreachのプロパティ

index、iteration、first、last、show、total

Smarty

{* ループの回数 0から数えた値 0,1,2,... *} {foreach $arrFrom as $arrVal} {$arrVal@index} {/foreach}

使用例

PHP

$arrFrom = array('foo', 'baz', 'bar', 'qux', 'quux'); $view->assign('arrFrom', $arrFrom);
0 1 2 3 4

Smarty

{* ループの回数 1から数えた値 1,2,3,... *} {foreach $arrFrom as $arrVal} {$arrVal@iteration} {/foreach}
1 2 3 4 5

continueで処理がスキップするとループ回数もスキップされる。カウンタ代わりにindexやiteration使用できないのでcounterを使用する。

Smarty

{* カウンタ *} {counter assign=i start=1 skip=1 print=false} {foreach $arrFrom as $arrVal} {if $arrVal eq 'baz' or $arrVal eq 'qux'} {continue} {/if} iteration:{$arrVal@iteration} counter:{$i} {counter} {/foreach}
iteration:1 counter:1 iteration:3 counter:2 iteration:5 counter:3

Smarty

{* ループの総数、カウント = count($arrFrom) *} {foreach $arrFrom as $arrVal} {$arrVal@total} {/foreach}
5

Smarty

{* ループが最初のときTRUE *} {foreach $arrFrom as $arrKey => $arrVal} {$arrKey} {if $arrVal@first} 最初のみの処理... {/if} {if ! $arrVal@first} 最初以外の処理... {/if} {/foreach}
0 最初のみの処理... 1 最初以外の処理... 2 最初以外の処理... 3 最初以外の処理... 4 最初以外の処理...

Smarty

{* ループが最後のときTRUE *} {foreach $arrFrom as $arrKey => $arrVal} {$arrKey} {if $arrVal@last} 最後のみの処理... {/if} {if ! $arrVal@last} 最後以外の処理... {/if} {/foreach}
0 最後以外の処理... 1 最後以外の処理... 2 最後以外の処理... 3 最後以外の処理... 4 最後のみの処理...

Smarty

{foreach $arrFrom as $arrVal} ... {/foreach} {if $arrVal@show} 配列が空でない場合の処理... {/if}

※foreachの記述について
smarty2: {foreach from=$arrFrom key=arrKey item=arrItem name=arrName}
smarty3: {foreach $arrFrom as $arrKey => $arrVal}

最新の記事

プロフィール

流されるままにウェブ業界で仕事しています。主にLAPP環境でPHPを書いています。最近はjQueryで遊んでいます。
※動作確認について