ループの総回数(totalプロパティ)

広告

ループが何回行われるのかトータルの回数を取得できます。「total」プロパティを使用します。

$smarty.foreach.ループ名.total

「total」プロパティは特殊なプロパティでループの中でも使用できますが、ループが終了してループのブロックを抜けた後でも参照することが出来ます。(他のプロパティはループ内でしか利用できません)。

例えば次のように記述します。

{foreach from=$personaldata item=var name=loopname}
<p>{$smarty.foreach.loopname.iteration}/{$smarty.foreach.loopname.total}}</p>
<p>要素:{$var}</p>
{/foreach}
<p>トータル回数:{$smarty.foreach.loopname.total}</p>

ループの中とループが終了したところでも{$smarty.foreach.loopname.total}を使用しています。

サンプルプログラム

では簡単なサンプルプログラムを作成して試してみます。

sample7-1.php

<?php

require_once('Smarty.class.php');

$smarty = new Smarty();

$smarty->template_dir = 'd:/smartysample/foreach/templates/';
$smarty->compile_dir  = 'd:/smartysample/foreach/templates_c/';
$smarty->config_dir   = 'd:/smartysample/foreach/configs/';
$smarty->cache_dir    = 'd:/smartysample/foreach/cache/';

$smarty->assign('title', '繰り返し処理のテスト');
$data = array(
             "name"=>"Yamada",
             "old"=>"24",
             "address"=>"Tokyo"
             );
$smarty->assign('personaldata', $data);

$smarty->display('sample7-1.tpl');

?>

上記を「sample7-1.php」の名前で「(Apacheドキュメントルート)¥smarty¥foreach」に保存します。

sample7-1.tpl

{* Smarty foreach/sample7-1.tpl *}
<html>
<head>
<title>Smarty Test</title>
</head>
<body>

<h1>{$title}</h1>
{foreach from=$personaldata item=var name=loopname}
<p>
要素:{$var}
[{$smarty.foreach.loopname.iteration}/{$smarty.foreach.loopname.total}]
</p>
{/foreach}
<p>トータル回数:{$smarty.foreach.loopname.total}</p>

</body>
</html>

上記を「sample7-1.tpl」の名前で「D:¥smartysample¥foreach¥templates」に保存します。

そしてブラウザから「http://localhost/smarty/foreach/sample7-1.php」へアクセスして下さい。

ループの総回数(totalプロパティ)

( Written by Tatsuo Ikura )