PHPUtilプラグイン(その15・条件による繰り返し)

PHPUtilプラグインでは、条件が成立するかどうかによって、繰り返すかどうかを決めることができる機能もあります。

1.MTPHPWhileタグ

MTPHPWhileタグは、繰り返しの最初で条件を判断し、その条件が満たされている間は、繰り返しを行うテンプレートタグです。
条件の部分は、MTPHPIfタグと同じ書き方をします。

<mt:PHPWhile 条件>
  条件を満たしている間行う処理
</mt:PHPWhile>

例えば、「何らかの処理を10回繰り返す」ということを考えてみます。
MTPHPForタグを使えば簡単に書けますが、それをMTPHPWhileタグで書くものとします。

この処理は以下のように考えることができます。

  • 1.カウンタ用の変数に1を代入する
  • 2.カウンタ用の変数が10以下かどうかを判断する
  • 3.2.の条件を満たす間、繰り返す処理を実行する
  • 4.カウンタ用変数の値を1増やす
  • 5.2.に戻る

カウンタ用の変数の名前をctrにするとすれば、上記の流れをMTPHPWhileタグで書くと、以下のようになります。

<$mt:PHPSetVar name="ctr" value="1"$>
<mt:PHPWhile name="ctr" le="10">
  繰り返す処理
  <$mt:PHPSetVar name="ctr" op="++"$>
</mt:PHPWhile>

2.MTPHPUntilタグ

MTPHPUntilタグは、「条件を満たすまで」繰り返しを行うタグです。
MTPHPWHileタグの「条件を満たしている間」と逆の動きになります。

例えば、前述の「何らかの処理を10回繰り返す」ということを、MTPHPUntilタグで書くとします。
「カウンタ用変数が10以下である間」は、「カウンタ用変数が10を超えるまで」とも考ても同じです。
このことから、以下のように書くことができます。

<$mt:PHPSetVar name="ctr" value="1"$>
<mt:PHPUntil name="ctr" gt="10">
  繰り返す処理
  <$mt:PHPSetVar name="ctr" op="++"$>
</mt:PHPUntil>

3.MTPHPDoWhile/MTPHPDoUntilタグ

MTPHPWhile/MTPHPUntilタグと似たタグとして、MTPHPDoWhile/MTPHPDoUntilというタグもあります。

<mt:PHPDoWhileまたはmt:PHPDoUntil 条件>
  条件を満たしている間行う処理
</mt:PHPDoWhileまたはmt:PHPDoUntil>

MTPHPWHile/MTPHPUntilタグは、繰り返しの最初に条件を判断します。
一方、MTPHPDoWHile/MTPHPDoUntilタグでは、繰り返しの最後に条件を判断します。

MTPHPWhile/MTPHPUntilタグでは、最初の条件判断の際に条件を満たしていれば、繰り返す処理を一度も行わないこともあり得ます。
一方、MTPHPDoWhlle/MTPHPDoUntilタグでは、繰り返す処理を行ってから条件判断するので、最低1回は繰り返す処理を行うことになります。

4.繰り返し系テンプレートタグのブロックの中で使える変数

MTPHPWhile/MTPHPUntil/MTPHPDoWHile/MTPHPDoUntilタグのブロックの中では、以下の各変数を使うことができます。
「__counter__」等の「__」は半角のアンダースコア2つです。

変数名内容
__counter__繰り返し回数
__first__繰り返しの最初なら1、それ以外ではnull
__even__偶数回目の繰り返しなら1、それ以外ではnull
__odd__奇数回目の繰り返しなら1、それ以外ではnull

なお、MTPHPForタグ/MTPHPLoopタグとは異なり、「__last__」の変数は使うことができません。

5.PHPUtilプラグイン関係の記事の一覧

PHPUtil関係のその他の記事は、以下のリンクから参照できます。