글쓴사람 마르크젝
글쓴시간2007년 11월 12일 오후 2시 46분 23초
    제목이와 같은 배열을 assign 시켰다면..
안녕하세요. 관리자님..
오랜만에 왔는데.. 또 질문 들고 왔네요...;;

Array
(
   [aaaa] => Array
       (
           [0] => Array
               (
                   [index_key] => 0
                   [cid] => 68
                   .....
                   .....
   [bbbb] => Array
       (
           [0] => Array
               (
                   [index_key] => 0
                   [cid] => 98
                   .....
                   .....

이와같이 처음 배열이 [0][1]로 시작되는게 아니라..
특정한 [aaaa]나 [bbbb]식으로 구성이 되었다면,
어떤식으로 tpl에서 루프 구문을 넣어줘야 할지 막막합니다.
특히나, aaaa와 bbbb의 인덱스 키는 고정되어 있지 않는 상황이라..
애매합니다....

바쁘실텐데.. 자꾸 귀찮게 해드리네요...
에고.. ^^;; 송구스럽지만, 가르침좀 주시겠습니까..
관리자 마르크젝님 안녕하세요.

간만에 방문해주셔서 감사합니다.

그런데, 위의 배열을 $arr 이라고 했을 때, $arr 을 루프돌리고 싶으신 건가요 아니면 $arr['aaaa'] 를 루프돌리고 싶으신 건가요. 'aaaa' 나 'bbbb' 에도 요소가 여러 개 있는데 이것도 루프로 돌리려는 것인가요.

$arr 를 루프돌리려면 key_ , value_ 키워드를 이용하시면 됩니다.

{@ arr}
    {.key_}
    {@ .value_}
        {..index_key}
        {..cid}
    {/}
{/}

해보시기 바랍니다.
07-11-13 12:40
마르크젝 관리자님 답변 감사합니다.
제가 원하던 답변이네요..

한가더 해결하지 못하는 점이 생겼습니다.
예를들어..

for (...) {
   for (...) {
       ....
   }
   $tpl->assign(array(
   "템플릿키"_vars = number_format(.......
   ......
   ......
   ));
}

*.tpl 에서
"템플릿키"_vars 를 출력하려면, 어떻게 해야 하나요..
compile 풀더 밑에 파싱되어 있는 파일 열어서 연구좀 해봐도
잘안되네요.....

이해가 되셨으리라 믿습니다..
수고하세요~!!!!
좋은 하루 되시구요...
07-11-14 11:35
마르크젝 "템플릿키"는 위의 {.key_} 가 되겠네요..
07-11-14 11:36
관리자 이해 못하겠는데요.

무슨 상황인지 데이터가 어떻게 주어져 있고 원하는 출력결과가 무엇이라고 이야기를 안해주시면 모를 수 밖에 없습니다.

다만 보이는 것만 답변드리면,

템플릿 내에서 템플릿변수와 문자열을 붙여서 다시 템플릿변수화할 수 있는 방법은 없습니다.

대신 배열을 이용한다거나 다른 해결책을 찾아 보시기 바랍니다.
07-11-14 19:45
마르크젝
Array
(
   [aaaa] => Array
       (
           [0] => Array
               (
                   [index_key] => 0
                   [cid] => 68
                   [price] => 22000
                   .....
                   .....
           [1] => Array
               (
                   [index_key] => 0
                   [cid] => 62
                   [price] => 47000
                   .....
                   .....
           [2] => Array
               (
                   [index_key] => 0
                   [cid] => 168
                   [price] => 11000
                   .....
                   .....
   [bbbb] => Array
       (
           [0] => Array
               (
                   [index_key] => 0
                   [cid] => 98
                   [price] => 52000
                   .....
                   .....
           [1] => Array
               (
                   [index_key] => 0
                   [cid] => 12
                   [price] => 47000
                   .....
                   .....
           [2] => Array
               (
                   [index_key] => 0
                   [cid] => 128
                   [price] => 19000
                   .....
                   .....

위의 [aaaa], [bbbb] 의 각각의 [price]요소의 총계를 구하고,
나아가서 총계를 토대로 다른 계산도 하려고 합니다..

배열을 이용해서 하라는 건 맞는 말씀이지만,
이미 aaaa 와 bbbb 요소를 출력하는 부분에서

{@ arr}
   {.key_}
   {@ .value_}
       {..index_key}
       {..cid}
   {/}

   //총계를 따로 배열로 구성하였다 하더라도
   //이부분에 총계가 나와야 하는데, 어떻게 출력이 가능할까요?
{/}


정말 제 머리는 돌대가리인가 봅니다. ㅠㅠ
07-11-16 10:32
관리자 많이 안해 본 것은 이래저래 생각이 안날 때가 많죠. 아무나 붙잡고 질문하다가 생각날 때도 있고 그렇습니다.

디비에서 데이터를 가져왔다면 처음부터 저렇게 주어져 있지는 않았을 텐데, 어쨌든 저렇게 주어져 있다고 치구요.

위 데이터구조를 다음과 같이 바꿔줄 수 있을 겁니다.

Array
(
    [0] => Array  (
        [name] => 'aaaa',
        [price_tot] => ........,
        [items] => Array (
            [0] => Array
            (
               [index_key] => 0
               [cid] => 68
               [price] => 22000
               .....
               .....
            [1] => Array
            (
               [index_key] => 0
               [cid] => 62
               [price] => 47000
               .....
               .....
            [2] => Array
            (
               [index_key] => 0
               [cid] => 168
               [price] => 11000
               .....
               .....
        )
    ),
    [1] => Array (
        [name] => 'bbbb',
        [price_tot] => ........,
        [items] => Array (

            [0] => Array
            (
               [index_key] => 0
               [cid] => 98
               [price] => 52000
               .....
               .....
            [1] => Array
            (
               [index_key] => 0
               [cid] => 12
               [price] => 47000
               .....
               .....
            [2] => Array
            (
               [index_key] => 0
               [cid] => 128
               [price] => 19000
               .....
    ),
    ...
)


처음 배열이 $arr1, 바뀐 배열이 $arr2 라면,


$arr2=array();

foreach ($arr1 as $k=>$v) {

    $el = array(
        'name' => $k,
        'price_tot' => 0,
        'items' => array()
    );
    while ($item = array_shift($v)) {
        $el['price_tot']+= $item['price'];
        $el['items'][] = $item;
    }

    $arr2[]=$el;
}
$tpl->assign('arr2', $arr2);


템플릿에서는

{@ arr2}
   {.name}
   {.price_tot}
   {@ .items}
       {..index_key}
       {..cid}
       {..price}
   {/}
{/}

이렇게 해볼 수 있습니다.




07-11-16 15:58
    이름
비밀번호
 
Since 2003-03-03 hosted on vultr.com