第3回 Smartyを使ってみる(その2:制御構造編) - Smarty講座

PHP講座 HTML×CSS 初級編

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>

yossy先生

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->assignarray
    
'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 
'ぴざ';
}

yossy先生

さて第3回はここまでです。今回はループや条件文といった制御構造について説明しました。次回は関数と修飾子について説明します。修飾子は変数に対して様々な加工、変換が出来、またそれをパイプで連結して複数の加工を続けて行うことが出来る面白い機能です。次回をお楽しみに。

  • yossy先生

本名:吉武 正史

パッケージ系ソフトウェア会社で、自然言語処理系の研究やWebアプリケーション、検索連動型広告などの開発に従事。 2006年末にフリーランスとして独立し、現在はPHPによるWeb開発の業務を中心に、コンサルティングや執筆活動などを展開。
サイトURL:http://freeative.jp/

ご意見・感想フォーム

今回の「yossy先生のSmarty講座」への評価・ご意見があればご記入下さい。

評価:
ご意見・感想:

  



Pick Up Q&A

Q
動的なURLを静的に見せる方法
 このエントリーをはてなブックマークに追加 
A
普通に考えて、mod_rewrite でしょうね。 http://www.nishishi.com/blog/2006/01/mod_rewrite_url.html...

>>続きを読む

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

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)