Under the Bridge

a Picture of the Late Him

配列に対するpopとshift

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

MT4.1ベータ。MTGetVar, MTVar ファンクションタグの追加機能の、functionモデファイアについて。

Movable Type 4.1 で強化される MT タグの新機能

配列やハッシュ変数に値を設定するときに実行する関数の名前を指定します。利用できる名前は以下のとおりです。

  • pop - 配列変数の一番上(または一番最後) から値を返します。
  • shift - 配列変数の一番下(または一番最初) から値を返します。
  • count - 配列変数に含まれる値の数、またはハッシュ変数に含まれるキーの数を返します。

正月にテスト環境でテストした結果のうちpopとshiftについて。

テストに用いたコード


<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="はひふへほ">

要素数:<MTGetVar name="count(chrData)">
結果の出力1
<MTSetVarBlock name="chrN"><MTGetVar name="count(chrData)" op="-" value="1"></MTSetVarBlock>
<mt:for var="x" from="0" to="$chrN">
    <MTGetVar name="x">番目のデータ:<MTGetVar name="chrData[$x]">
</mt:for>

先頭・末尾のデータ取得と削除
先頭データ:<MTGetVar name="shift(chrData)">
末尾データ:<MTGetVar name="pop(chrData)">

要素数:<MTGetVar name="count(chrData)">
結果の出力2
<MTSetVarBlock name="chrN"><MTGetVar name="count(chrData)" op="-" value="1"></MTSetVarBlock>
<mt:for var="x" from="0" to="$chrN">
    <MTGetVar name="x">番目のデータ:<MTGetVar name="chrData[$x]">
</mt:for>

考察

配列の一番下あるいは一番上、つまり端っこの値を取得するfunctionモデファイアということである...しかし、実行すると、配列中からその値が削除されてしまう。

配列をMTForループでまわして何かの処理を行いたい場合、配列の大きさを調べる際には、安易に使用するべきではない。そもそも、配列の上限値(配列要素をゼロから用いた場合)であれば次のように書けば取得できる。

<MTSetVarBlock name="chrN"><MTGetVar name="count(chrData)" op="-" value="1"></MTSetVarBlock>

トラックバック(0)

このブログ記事を参照しているブログ一覧: 配列に対するpopとshift

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

コメントする






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

parts

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

あわせて読みたい

なかのひと

2008年4月5日開催、MT4LP5

2008 yoshi(apstar)