ループ制御


HTMLに

{loop:arr}
{var1}
{end:}

っていうのがあると

  • $arr に var1 をキーとした値があれば $arr['var1']を表示
  • なければ$t->var1 を表示

っていうようにしたかったんだけど・・。
コンパイルした時点では$arr['var'] があるかどうかが分からないんだよね。。
コンパイルの時点では変数に値が代入されていない。


これを判断するには・・
if文での条件判断をコンパイル済ファイルに出力しなければいけないのか。。

<?php foreach ($t->arr as $loop){ ?>
<?php if (isset($loop['var1'])) echo htmlspecialchars($loop['var1']); else htmlspecialchars($t->var1); ?>

ってな具合に。
変数毎にチェックしてたらif文だらけになってコンパイルの意味が薄れる・・。。。



でも折角だから実現したいんだよなぁ。。。


foreachの最初と最後で

foreach ($t->arr as $loop){
  $flexy_loop_tmp = array();
  foreach ($loop as $key => $value){
    if (isset($t->$key)) $flexy_loop_tmp[$key] = $t->$key;
    $t->$key = $value;
  }

  ・・・

  foreach ($flexy_loop_tmp as $key => $value){
    $t->$key = $value;
  }
}

とかやったらどうだろう。
一応できそうな予感。


二度手間かなー。。