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}
 
この記事が気に入ったらシェアしてください