Smarty - 繰り返し処理(foreach)

Advertisement

繰り返し(foreach)

{foreach}
{foreachelse}
{/foreach}

を利用すると、解析時に配列の要素に応じた繰り返し処理を行うことが出来る。

書式
{foreach from=[配列] key=[キー] item=[アイテム] name=[このループブロックの名前]}
    // 処理
{foreachelse}
    // 処理
{/foreach}
foreachの繰り返し処理では、fromに割り当てられた配列の要素数分だけ自動的に繰り返し処理が実行される。繰り返しのたびに、keyに指定したテンプレート変数に配列へのアクセスキーが、itemに指定したテンプレート変数に配列の中身がそれぞれ割り当てられる。nameには、このループの名前を指定することが出来る。foreachはネストが可能なので、対象ブロックを区別することができる。
{foreachelse}を記述している場合、配列の要素が空の場合にこちらのブロックの処理が実行される。

サンプルコード

foreach.php
<?php
require_once('Smarty/Smarty.class.php');

$smarty = new Smarty;
$smarty->assign("data", array("data1", "data2", "data3"));
$smarty->display('foreach.tpl');
?>

foreach.tpl
<html>
<head>
<title>foreach</title>
</head>
<body>

<ul>
{foreach from=$data key="key" item="value" name="list"}
    <li>{$key}:{$value}</li>
{foreachelse}
    データがない
{/foreach}
</ul>

</body>
</html>

実行結果
0:data1
1:data2
2:data3

現在のループ回数を取得する

iteration変数を利用する。
{$smarty.foreach.foreachname.iteration}

Advertisement

ショートカット

634トップページ
このカテゴリのトップページに戻る
634ラボ

サイト検索

Google

Web サイト内

Y!ログール