Under the Bridge

a Picture of the Late Him

MT4.1:Forループ(配列の並びを逆にする)

2008年1月 6日 13:17 | Writer: yoshi | 記事本文 | コメント(0) | トラックバック(0)

MT4.1(Movable Type4.1)のForループで、配列の順序を逆にひっくり返すサンプル。

テストコード


<MTSetVar name="chrData[0]" value="あいうえお">
<MTSetVar name="chrData[1]" value="かきくけこ">
<MTSetVar name="chrData[2]" value="さしすせそ">
<MTSetVar name="chrData[3]" value="たちつてと">
<MTSetVar name="chrData[4]" value="なにぬねの">
<MTSetVar name="chrData[5]" value="はひふへほ">

逆ループ
<MTSetVarBlock name="chrN"><MTGetVar name="count(chrData)" op="-" value="1"></MTSetVarBlock>
<MTSetVarBlock name="decN"><MTGetVar name="count(chrData)"></MTSetVarBlock>
<mt:for var="x" from="0" to="$chrN">
    <MTSetvar name="decN" op="-" value="1">
    <MTGetVar name="chrData[$decN]">
</mt:for>

出力結果

はひふへほ

なにぬねの

たちつてと

さしすせそ

かきくけこ

あいうえお

解説

1~6行目:chrData[]配列データを準備する。

9行目:配列の大きさを取得する。MTSetVarBlockでchrNという変数を定義、これに配列の大きさをMTGetVar name="count(chrData)" op="-" value="1"で取得してぶち込む。データの数は6だが、配列のインデックスは0から5までを使用しているので、count関数でデータ数6を取得した後opモデファイアに減算"-"を指定、減算する値をvalue="1"と指定して、配列の上限インデックスである5を取得している。StrVarとGetVarの入れ子である。

10行目:ループ中で配列のインデックスを操作するための「データ数」を取得する。このサンプルではMTGetVar name="count(chrData)"で6を取得する。

11行目:Forループの開始。toには9行目で調べた、配列の大きさが格納されている変数をドルマークつきで記述する。この例の場合はForループの場合はここがキメウチとなると、間違ったときが怖い。

12行目:10行目で求めた、データ数decNを結果出力前に-1減算していく。つまり、カウンタxが「0→1→2→3→4→5」と推移していくと、decN変数は「5→4→3→2→1→0」と推移する。

13行目:結果を出力。配列のインデックスには、12行目で求めたdecN変数をドルマークつきで記述する。

トラックバック(0)

このブログ記事を参照しているブログ一覧: MT4.1:Forループ(配列の並びを逆にする)

このブログ記事に対するトラックバックURL:

コメントする






Categories
Entries
Feed
スポンサードリンク

parts

フィードメーター - Under the Bridge

あわせて読みたい

なかのひと

2008年4月5日開催、MT4LP5

2008 yoshi(apstar)