smartyは、PHPのテンプレートエンジンです。
smarty内では、{foreach}で配列を繰り返すことができます。
smartyでforeachを利用して配列を繰り返して表示する方法
下記のようにすると、ulリスト内で配列の値の個数分liアイテムを繰り返して表示することができます。
<ul> {foreach from=$配列の変数 item='配列内で利用する値の変数' key='配列内の値のキー' name='ループの名前'} <li>{$key}:{$item}</li> {/foreach} </ul>
item=''、key=''、name=''内に「$」は必要ありません。
foreachを利用するとき、fromとitemは必須ですが、keyとnameは必須ではありません。
keyとnameは必要な場合に任意で記述してください。
freoでforeachを使うときのワンポイント
freoで配列をforeachで繰り返して表示したい場合は、配列の変数に[|smarty:nodefaults]という変数をつけてください。
freoでは全ての変数がescapeされているためです。
参考URL:32877|【freo講座】【初心者の為のfreoテンプレート編集講座】【基本編(07)】修飾子について
多次元配列をsmartyでforeachするサンプル
例えば、下記のような多次元配列があったとします。
$arrays = array( [0] => array( [0] => array( 'id' => '1' 'name' => '田中' ) [1] => array( 'id' => '2' 'name' => '鈴木' ) ) [1] => array( [0] => array( 'id' => '1' 'name' => '東京' ) [1] => array( 'id' => '2' 'name' => '大阪' ) ) )
上記配列のidとnameを取得するには、下記のようにすればOKです。
{foreach from=$arrays item='array'} <div> {foreach from=$array item='data'} <ul> {foreach from=$data item='content' key='key'} <li>{$key}:{$content}</li> {/foreach} </ul> {/foreach} </div> {/foreach}
または
{foreach from=$arrays item='array'} <div> {foreach from=$array item='data'} <ul> <li>id:{$data.id}</li> <li>name:{$data.name}</li> </ul> {/foreach} </div> {/foreach}
参考URL
- smarty:{foreach},{foreachelse}