PHPUtilプラグイン(その16・繰り返しを途中で抜ける)

PHPUtilプラグインでは、繰り返しの処理を途中で抜けることもできます。

1.MTPHPBreakタグ

繰り返しを途中で抜けるには、MTPHPBreakというテンプレートタグ(ファンクションタグ)を使います。
MTPHPFor/MTPHPLoop/MTPHPWhile/MTPHPUntil/MTPHPDoWhile/MTPHPDoUntilの各タグのブロックの中で、MTPHPBreakタグを使うことができます。
MTPHPIfタグで条件を判断して、その条件を満たした時にMTPHPBreakタグで繰り返しを抜ける、といった使い方ができます。

<mt:PHPFor等の繰り返し系タグ>
  ・
  ・
  ・
  <mt:PHPIf 繰り返しを抜けるかどうかの条件>
    繰り返しを抜ける前の処理
    <$mt:PHPBreak$>
  </mt:PHPIf>
  ・
  ・
  ・
</mtPHPFor等の繰り返し系タグ>

2.事例

例えば、以下のような処理を行いたいとします。

  • 配列numがあって、個々の要素に数値が代入されています。
  • 配列numの先頭の要素から順に調べ、値が10以上になっている要素があれば、最初に見つかった要素の番号と値を表示します。
  • 値が10以上の要素がなければ、「値が10以上の要素は見つかりませんでした。」と表示します。

上記の処理をテンプレートで表すと、以下のようになります。

<$mt:PHPSetVar name="is_found" value="0"$>
<mt:PHPLoop name="num">
  <mt:PHPIf name="__value__" ge="10">
    <p><$mt:PHPGetVar name="__key__"$>番目の要素が10以上で、値は<$mt:PHPGetVar name="__value__"$>でした。</p>
    <$mt:PHPSetVar name="is_found" value="1"$>
    <$mt:PHPBreak$>
  </mt:PHPIf>
</mt:PHPLoop>
<mt:PHPUnless name="is_found">
  <p>値が10以上の要素は見つかりませんでした。</p>
</mt:PHPUnless>

1行目のMTPHPSetVarタグで、「is_found」という変数に0を代入しています。
この変数は、値が10以上の要素が見つかったかどうかを表すものです。
繰り返しに入る前の段階では、まだ要素は見つかっていないので、偽を表す0を代入しておきます。

2/8行目のMTPHPLoopタグで、配列numから要素を1つずつ順に取り出し、繰り返しを行います。
次に、3/7行目のMTPHPIfタグで、要素の値(変数__value__)が10以上かどうかを調べます。
条件を満たしたら(要素が見つかったら)、4行目によって、見つかった要素の番号と値を出力します。
また、要素が見つかったので、5行目の変数is_foundに、真を表す1を代入します。
そして、6行目のMTPHPBreakタグで繰り返しを抜けます。

9/11行目のMTPHPUnlessタグでは、変数is_foundが偽(=要素が見つからなかった)場合の処理を行います。
この場合、10行目によって、「値が10以上の要素は見つかりませんでした。」と出力します。

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

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