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

PHP基礎編

yossy先生のSmarty講座

Lecutures on PHP

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

 このエントリーをはてなブックマークに追加

ループ -foreach

yossy先生

さて前回、PHPからSmartyテンプレートへ配列を渡してその要素を表示する方法を説明しました。

しかし配列の要素数が不定の場合、全部の要素を表示するために、いちいち添え字を指定して配列の要素にアクセスするのは無理があります。

そこで配列の要素を順に取得し、繰り返し処理を実行するための方法を説明します。{foreach}を用いる方法です。

{* 配列変数$friendsの要素を順に取得し、リスト表示 *}
<ul>
{foreach 
from=$friends item=f}
<
li>{$f}</li>
{/foreach}
</
ul>

foreachでfromとitemの2つの属性を指定しています。fromには要素を順に取得する配列変数、itemにはループ内で要素にアクセスするための変数名を指定します。

例えばPHPから変数$friendsに以下のような配列が渡されているとします。

$friends array'milukuma''willer''watal''unini' );
$smarty->assign'friends'$friends );

上記のSmartyテンプレートの実行結果は以下のようになります。

<ul>
<
li>milukuma</li>
<
li>willer</li>
<
li>watal</li>
<
li>unini</li>
</
ul>

さてPHPのforeachではキーと値をペアで取得することが出来ますが、Smartyテンプレートのforeachでも同様にキーと値をセットで取得することが出来ます。

{* 配列変数$friendsの要素を順に取得し、リスト表示 *}
<ul>
{foreach 
from=$friends key=k item=f}
<
li>{$k}: {$f}</li>
{/foreach}
</
ul>

上記のSmartyテンプレートの実行結果は以下のようになります。{$k}には配列の添え字が格納されます。配列が連想配列の場合も同様にキーが格納されます。

<ul>
<
li>0milukuma</li>
<
li>1willer</li>
<
li>2watal</li>
<
li>3unini</li>
</
ul>

もしfromで指定した値が空だったり要素がなかった場合に、エラーメッセージを出すなど特別な処理をしたい場合があります。そのときは{foreachelse}を指定し、その中に表示する内容を記述します。

{* 配列変数$friendsの要素を順に取得し、リスト表示 *}
<ul>
{foreach 
from=$friends key=k item=f}
<
li>{$k}: {$f}</li>
{
foreachelse}
<
li>友達はいません(T_T)</li>
{/foreach}
</
ul>

  



Pick Up Q&A

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

>>続きを読む

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

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