mtde.info

Movable Type Developers Express

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

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

MTSetVarテンプレートタグにおけるfunctionモデファイアの中で、undefという関数がありますが、これは「配列またはハッシュ変数をクリアする」という機能を持ちます。クリアは値(データ)のみのクリアであり、配列自体は削除されるわけではないです。

例えば、testVar[ ]という配列があり、要素0から10まで内部にデータを持っているとします。MTSetVarで同じ変数名を指定しつつ indexモデファイアでクリアしたい要素、functionモデファイアでundefという関数を指定すると、指定要素のデータのみクリアできます。

書式例

<MTSetVar name="testVar" function="undef">

図解

実行前

  • 変数名:値
  • 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="undef" index="7">を追加すると...

indexモデファイアで指定した要素7番目のデータのみがクリアされます。

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

<MTSetVar name="testVar" function="undef">を追加すると...

indexモデファイアを略してfunction="undef"モデファイアを指定すると、すべてのデータがクリアされます(※配列が削除されるわけではないです)。

  • 変数名:値
  • testVar[0]:
  • testVar[1]:
  • testVar[2]:
  • testVar[3]:
  • testVar[4]:
  • testVar[5]:
  • testVar[6]:
  • testVar[7]:
  • testVar[8]:
  • testVar[9]:
  • testVar[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>

<!-- 配列7番目の要素からデータを削除 -->
<MTSetVar name="testVar" function="undef" index="7">
<p>要素7のみをクリアする場合</p>
<!-- もう一度元データを出力 -->
<MTFor var="x" from="0" to="15">
<MTGetVar name="x">:<MTGetVar name="testVar[$x]"><br />
</MTFor>

<!-- indexモデファイアを略すると... -->
<MTSetVar name="testVar" function="undef">
<p>インデックスを略した場合</p>
<!-- もう一度元データを出力 -->
<MTFor var="x" from="0" to="15">
<MTGetVar name="x">:<MTGetVar name="testVar[$x]"><br />
</MTFor>

短縮形

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

SetVar系

2008 mtde.info