setLoop() 이전    다음    목록
기본루프메서드만으로도 원하는 모든 출력을 얻을 수 있습니다. 그러나 루프로 출력할 데이터가 배열로 미리 주어져 있을 때 setLoop()를 사용하면 보다 효율적으로 처리할 수 있습니다.
1.
void setLoop( string loop_id, array array [,int buffer] )
주어진 배열을 루프로 전환하며, 배열 요소의 개수만큼 섹션이 만들어집니다.  인덱스배열 연관배열 모두 가능하며 예약변수 'key_' 와 'value_' 를 통해 출력됩니다. 템플릿문법은 기본루프와 동일하고, 예약변수 'index_' 와 'size_' 도 사용할 수 있습니다.
index.php
<?php
include 'Template.class.php';
$tpl = new Template_;
$tpl->define('some', 'some.tpl');
$tpl->assign('start', 5);
$fruits = array('apple'=>'red', 'orange'=>'orange', 'melon'=>'green');
$tpl->setLoop('fruit', $fruits);
$tpl->print_('some');
?>
some.tpl
<table>
<tr>
    <td>Num</td>
    <td>Fruit</td>
    <td>Color</td>
</tr>
{@ fruit}
<tr>
    <td>{start - .index_}</td>
    <td>{.key_}</td>
    <td>{.value_}</td>
</tr>
{/}

</table>
Total: {fruit.size_}
>>output
<table>
<tr>
    <td>Num</td>
    <td>fruit</td>
    <td>color</td>
</tr>
<tr>
    <td>5.</td>
    <td>apple</td>
    <td>red</td>
</tr>
<tr>
    <td>6.</td>
    <td>orange</td>
    <td>orange</td>
</tr>
<tr>
    <td>7.</td>
    <td>melon</td>
    <td>green</td>
</tr>

</table>
Total: 3
인덱스배열을 루프로 전환했을 때, 예약변수 'key_' 와 'index_'는 같은 값을 가지나 'key_' 보다 'index_'를 사용하는 것이 효율적입니다.
setLoop() 의 세번째인자인 버퍼를 지정해서 중첩루프로 사용될 수는 있으나 중첩루프를 가질 수는 없습니다. 버퍼의 기본값은 1 입니다.
2.
void setLoop( string loop_id, int iteration_num [,int buffer] )
두번째 인자로 배열대신, 루프의 반복회수를 지정할 수 있습니다. 템플릿루프문법은 동일하며 'index_' 와 'size_' 를 사용할 수 있습니다.
index.php
<?php
include 'Template_.class.php';
$tpl = new Template_;
$tpl->define('index', 'index.tpl');
$fruits = array('apple'=>3, 'orange'=>0, 'melon'=>2);
$tpl->loopLoad('fruit', 1);
foreach ($fruits as $name => $num) {
    $tpl->loopPushAssign(array(
        'name' =>$name,
    ), 1);
    $tpl->setLoop('star', $num, 2);
}
$tpl->print_('index');
?>
index.tpl
<table>
{@ fruit}
<tr>
    <td>{.name}</td>
    <td>{@ star}<img src=star.gif>{: star}-- no star --{/}</td>
</tr>
{/}

</table>
>>output
<table>
<tr>
    <td>apple</td>
    <td><img src=star.gif><img src=star.gif><img src=star.gif></td>
</tr>
<tr>
    <td>orange</td>
    <td>-- no star --</td>
</tr>
<tr>
    <td>melon</td>
    <td><img src=star.gif><img src=star.gif></td>
</tr>

</table>
 이전 목록 다음 
 
Since 2003-03-03 hosted on vultr.com