mtde.info

Movable Type Developers Express

MTSetVarにおけるfunctionモデファイア(unshift関数)

2008年2月 1日 20:43 | Writer: apstar | 記事本文

MTSetVarテンプレートタグにおけるfunctionモデファイアの中で、unshiftという関数がありますが、これは「配列変数の一番下(または一番最初)に新しい値を追加する」という機能を持ちます。

例えば、testVar[ ]という配列があり、要素が0から10までとします。MTSetVarで同じ変数名を指定しつつ functionモデファイアでunshiftという関数を指定すると、valueモデファイアで指定した値をセットしつつ配列の一番最初へデータを追加できます。

unshiftでのデータ挿入においては、pushとは異なり、unshiftで挿入したデータ以後は今までのデータと配列要素は1つずつずれるというのが注意するべき点です。

書式例

<MTSetVar name="testVar" function="unshift" value="11">

図解

実行前

  • 変数名:値
  • testVar[0]:0
  • testVar[1]:1
  • testVar[2]:2
  • testVar[3]:3
  • testVar[4]:4
  • testVar[5]:5
  • testVar[6]:6
  • testVar[7]:7
  • testVar[8]:8
  • testVar[9]:9
  • testVar[10]:10

<MTSetVar name="testVar" function="unshift" value="11">を追加すると...

  • 変数名:値
  • testVar[0]:11
  • testVar[1]:0
  • testVar[2]:1
  • testVar[3]:2
  • testVar[4]:3
  • testVar[5]:4
  • testVar[6]:5
  • testVar[7]:6
  • testVar[8]:7
  • testVar[9]:8
  • testVar[10]:9
  • testVar[11]:10

一連のテストコード例

<!-- 元データを準備 -->
<MTFor var="x" from="0" to="10">
<MTSetVar name="testVar[$x]" value="$x">
</MTFor>

<!-- 元データを出力 -->
<MTFor var="x" from="0" to="15">
<MTGetVar name="x">:<MTGetVar name="testVar[$x]"><br />
</MTFor>

<!-- 配列先頭の要素へデータを追加 -->
<MTSetVar name="testVar" function="unshift" value="11">

<!-- もう一度元データを出力 -->
<MTFor var="x" from="0" to="15">
<MTGetVar name="x">:<MTGetVar name="testVar[$x]"><br />
</MTFor>

短縮形

このコードは、<MTSetVar name="unshift(testVar)" value="11">と記述することもできます。

SetVar系

2008 mtde.info