第3回 Smartyを使ってみる(その2:制御構造編) - Smarty講座
yossy先生のSmarty講座
Lecutures on PHP
第3回 Smartyを使ってみる(その2:制御構造編) (その3)
ループ - section
さて、Smartyテンプレートで利用できるループの方法にはもう一つ、{section}があります。
{* 配列変数$friendsの要素を順に取得し、リスト表示 *}
<ul>
{section name=f loop=$friends}
<li>{$friends[f]}</li>
{/section}
</ul>

nameはループにつけられた名前です。この名前はPHPの変数と同様、 英数字とアンダースコア(_)からつけることが出来ます。loopは値を繰り返し取得する変数を指定します。通常は配列を指定します。
さて、このループ内で要素をアクセスするには、loopで指定した変数に対して{$friends[f]}のようにnameで指定した名前を添え字として用います。なおnameで指定した名前は変数ではないので、直接{$f}のように書いても配列の添え字が表示されるわけではないことに注意してください。
ここまでだと添え字を記述する分、{foreach}より使い勝手が悪そうに見えますが、{section}の面白いところは複数の配列に対して同時にアクセスすることが出来るところです。例えば以下のように複数の配列がPHPから渡されているとします。
$countries = array( 'Japan', 'America', 'England', 'France' );
$capitals = array( 'Tokyo', 'Washington', 'London', 'Paris' );
$languages = array( 'Japanese', 'English', 'English', 'French' );
$smarty->assign( array(
'countries' => $countries,
'capitals' => $capitals,
'languages' => $languages
) );
これらの配列の要素数はすべて同じです。これらの配列の要素を1つのループで同時にアクセスしたい場合、{section}を使うことで実現できます。
{* 配列変数$countriesをsectionでループを回し、$capitals,$languagesにもアクセスする *}
<table>
<tr>
<th>国名</th>
<th>首都</th>
<th>母国語</th>
</tr>
{section name=c loop=$countries}
<tr>
<td>{$countries[c]}</td>
<td>{$capitals[c]}</td>
<td>{$languages[c]}</td>
</tr>
{/section}
</table>
さて上の方で、loopは順に取得する変数を指定する、と書きましたが、実はこれは正確な説明ではありません。マニュアルではloopで指定する値は「ループ回数を決定するために使用される」と書かれています。
つまり配列を指定した場合は、その要素数がループ回数となります。なので、要素数が同じ配列であれば、上記のように同時に要素を取得することが出来る、というわけです。
更に、loop変数には数値を指定することも出来ます。
{* Smartyのsectionで、ぴざって10回言ってみる *}
{section name=pizza start=0 loop=10}
ぴざ
{/section}
startはループ回数をカウントするインデックスの初期値で、loopで指定した値より小さい回数の間ループを繰り返します。上記と同じ処理をPHPで書くと以下のようになります。
// PHPでぴざって10回言ってみる
for( $i = 0; $i < 10; $i++ ){
echo 'ぴざ';
}

さて第3回はここまでです。今回はループや条件文といった制御構造について説明しました。次回は関数と修飾子について説明します。修飾子は変数に対して様々な加工、変換が出来、またそれをパイプで連結して複数の加工を続けて行うことが出来る面白い機能です。次回をお楽しみに。
その他の記事も見る
- 第1回 Smartyの紹介
- 第2回 Smartyを使ってみる(その1:変数編)
- 第3回 Smartyを使ってみる(その2:制御構造編)
- 第4回 Smartyを使ってみる(その3:関数編)
- 第5回 Smartyを使って実用的なページを作ってみる(その1)
- 第6回 Smartyを使って実用的なページを作ってみる(その2)
- 第7回 Smartyの便利な機能を使いこなす(その1:キャッシュ前編)
- 第8回 Smartyの便利な機能を使いこなす(その2:キャッシュ後編)
- 第9回 Smartyの便利な機能を使いこなす(その3:フィルタ編)
- 第10回 Smartyの便利な機能を使いこなす(その4:プラグイン編)
- 第11回 Smartyとフレームワーク(その1:CakePHP編)
- 第12回 Smartyとフレームワーク(その2:Zend Framework編)
- 第13回 次世代のSmarty - Smarty3の紹介
- 第14回 Smartyでケータイサイトを作ってみる
- >>「yossy先生のSmarty講座」一覧ページに戻る
- yossy先生
本名:吉武 正史
パッケージ系ソフトウェア会社で、自然言語処理系の研究やWebアプリケーション、検索連動型広告などの開発に従事。
2006年末にフリーランスとして独立し、現在はPHPによるWeb開発の業務を中心に、コンサルティングや執筆活動などを展開。
サイトURL:http://freeative.jp/





ページのトップへ


GETのままでは検索エンジンのロボットが拾ってくれなかったためにSEO対策として有効だと言われていますね。