MTSetVarにおけるfunctionモデファイア(undef関数)
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系