4月 03

この記事をブックマークする : このページをはてなブックマークに追加 このページをLivedoorクリップ! このページをニフティクリップに登録 newsing it! このページをdel.icio.usに登録 このページをBuzzurlにブックマーク

今回はSmartyを使用して簡単にツリーを作成する方法です。
まずphpの処理で、配列のキーに親の番号、値にノードのIDを持つ配列を用意しておきます。
例)
$arrChild = array(array(1,3), array(2), array(4,6), array(), array(5),array(), array())

そしてSmartyの呼び出し用のテンプレmain.tplと再帰用のtree.tpを用意します。
main.tpl——————————-
{assign var=”id” value=”0″}
{include file=”tree.tpl”}
—————————————

tree.tpl——————————–
{foreach from=$arrChild[$id] item=id}
<処理>
{if $arrChild[$id]}
{include file=”tree.tpl”}
{/if}
{/foreach}
—————————————

これだけでどれだけ巨大なツリーでも処理が行えます。
この再帰呼び出しのキモはtree.tplの1行目の
{foreach from=$arrChild[$id] item=id}
の部分になります。

最初にこの行が呼び出されたときは$idは0が入っており、最初に
$arrChild[0]の中をforeachで回しますが、このときitemにidを指定しているのでこのループの内側では$idは$arrChild[0][0]に入っている1になります。
そして{if $arrChild[1]}を行うと中身が入っているので{include file=”tree.tpl”}が呼ばれます。
そうすると次は$idが1の状態で{foreach from=$arrChild[$id] item=id}が呼ばれ・・・
という再帰処理が行われます。

結構使えるテクだと思いますのでお試しあれ・・

この記事をブックマークする : このページをはてなブックマークに追加 このページをLivedoorクリップ! このページをニフティクリップに登録 newsing it! このページをdel.icio.usに登録 このページをBuzzurlにブックマーク

One Response to “PHP技術情報:Smartyを使ったちょっとしたテク”

  1. 2010/11/24の叫びつぶやき | gather-up [wp] Says:

    [...] はぁ、smartyで再帰的な処理をしようっつーのがそもそもイカンのかな。。。 http://blog.asens.jp/archives/461 これはなかなかナルホドって感じだけど。DIRツリーをポチポチ開閉するだけなんだ [...]