一定要用模板引擎其实我是想要得到各种模板引擎的正规写法和优化写法(因为好多模板引擎我没有用过,有些用过也忘的差不多了)
与我写的模板引擎做一对比,还请大家多多帮忙,谢谢!!!TTemplate
<table block='data'>
<tr><td>{char}</td><td></td></tr>
<tr block='child,,1'><td></td><td>{text}</td></tr>
</table><?php
...
  function data() {
    return $ar);
  }
...

解决方案 »

  1.   

    在PHPLIB里,我会把这个数组变成如下形式
    $ar = array( "A"=>array( "aa", "aaa" ), "B"=>array( "bb","bbb") );然后用
    foreach( $ar as $key=>$value ){
      $t->setvar( "char", $key);
      foreach( $value as $val) {
        $t->setvar( "text", $val );
        $t->parse("child_blocks", "child_block", true );
      }
      $t->parse( "char_blocks", "char_block", true);
    } PHPLIB TEMPLATE
    ======================
    <table>
      <!-- BEGIN char_block -->
      <tr>
        <td>{char}</td>
      </tr>
      <tr>
        <!-- BEGIN child_block -->
        <td>{text}</td>
        <!-- END child_block -->
      </tr>
      <!-- END char_block -->
    </table>看起来比较麻烦的说呵呵 。。可能我水平有限。
      

  2.   

    Smarty:
    {section name=i loop=$ar}
    $ar[i]['char']
    {section name=j loop=$ar[i]['child']}
    $ar[i]['child'][j]['text']
    {/section}
    {/section}
    只要模板语言支持嵌套就行了
      

  3.   

    那我就来Smarttemplate 吧把这个数组变成如下形式
    $ar = array( array( 'bb'=>"aa", 'cc'=>"aaa" ), array( 'bb'=>"bb",'cc'=>"bbb") );模板:
    <!-- BEGIN row -->
    {bb}{cc}
    <!-- END row -->
    程序:
    $tpl->assign('row', $ar)手写,没测试,大概就这样
      

  4.   

    请不要改变题目中的数据格式!!!Smarttemplate可这样
    模板
    <table>
    <!-- BEGIN row -->
    <tr><td>{char}</td><td></td></tr>
    <!-- BEGIN child -->
    <tr><td></td><td>{text}</td></tr>
    <!-- END child -->
    <!-- END row -->
    </table>
    程序
    $page->assign('row',$ar);phplib template可这样
    模板
    <table>
    <!-- BEGIN row -->
    <tr><td>{char}</td><td></td></tr>
    <!-- BEGIN child -->
    <tr><td></td><td>{text}</td></tr>
    <!-- END child -->
    <!-- END row -->
    </table>
    程序
    $tpl->set_block('root','row','row1');
    $tpl->set_block('row','child','child1');
    foreach($ar as $row) {
      $tpl->set_var('char',$row['char']);
      $tpl->set_var('child1','');
      foreach($row['child'] as $v) {
        $tpl->set_var($v);
        $tpl->parse('child1','child',true);
      }
      $tpl->parse('row1','row',true);
    }**** 当然这不是最优解,仅供参考!希望得到最多、最好的解法
      

  5.   

    Smarty:php:
    <?php
         $ar = array(array('char' => 'A','child' => array(array('text' => 'aa'),array('text' => 'aaa'),) ),
        
              array('char' => 'B','child' => array(array('text' => 'bb'),array('text' => 'bbb'),) ),
    );
        $tpl->assign("ar", $ar);
        $tpl->display('test.htm');
        
    ?> test.htm:
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=big5">
    <title></title>
    </head> 
    <body>
    <{section name=sec1 loop=$ar}>
    <{$ar[sec1].char}><br>
    <{section name=sec2 loop=$ar[sec1].child}>


    <{$ar[sec1].child[sec2].text}><br>

    <{/section}>
    <{/section}></body>
    </html>我的方法
      

  6.   

    phplib template、smarttemplate老大说了
    smarty也可这样
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=big5">
    <title></title>
    </head> 
    <body>
    {%foreach from=$ar item=sec1%}
    {%$sec1.char%}<br>
    {%foreach from=$sec1.child item=sec2%}
    {%$sec2.text%}<br>
    {%/foreach%}
    {%/foreach%}
    </body>
    </html>
      

  7.   

    phplib template、smarttemplate老大说了
    smarty也可这样
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=big5">
    <title></title>
    </head> 
    <body>
    {%foreach from=$ar item=sec1%}
    {%$sec1.char%}<br>
    {%foreach from=$sec1.child item=sec2%}
    {%$sec2.text%}<br>
    {%/foreach%}
    {%/foreach%}
    </body>
    </html>
      

  8.   

    用asp写的模板引擎偶实现过这种效果,用php的就......
      

  9.   

    我的模板:
    <php:iterator source="ar">
    <com:label source="ar" field="char"/>
    <com:set source="ar" field="child" var="child"/>
    <php:iterator source="child">
    <com:label source="child" field="text"/>
    </php:iterator>
    </php:iterator>
      

  10.   

    用smarty简单一写,献丑了:
    程序:
    $ar = array(
    array('char' => 'A',
    'child' => array(
    array('text' => 'aa'),
    array('text' => 'aaa'),
    )
    ),
    array('char' => 'B',
    'child' => array(
    array('text' => 'bb'),
    array('text' => 'bbb'),
    )
    ),
    );模版:
    <table>
    {section name=var loop=$ar}
    <tr>
    <td>{$ar[var].char}<td>
    </tr>
    {section name=var1 loop=$ar[var].child}
    <tr>
    <td>{$ar[var].child[var1].text}<td>
    </tr>
    {/section}
    {/section}
    </table>
      

  11.   

    模板:
    <!-- BEGIN ROWS -->
    {char}
    <!-- BEGIN Childs -->
        {childs}
    <!-- END Childs -->
    <!-- END ROWS -->代码:
    foreach($ar as $char=>$childs){
       $Tpl->SetVar("char",$char);
       foreach($childs as $index=>$value){
        $Tpl->SetVar("childs",$value);
        $Tpl->parse("Childs ",true);
       }
       $Tpl->parse("ROWS",true);
    }未测试,CodeCharge模板
      

  12.   

    PHPTAL 模板 
    注:代码极其简单html:
      <table tal:repeat="item result">
      <tr>
        <td bgcolor='#EFEFEF' tal:content="item/char">item name</td>
      </tr>
      <tr> 
        <td>
          <table width="100%">
            <tr tal:condition="item/child" tal:repeat="item_child item/child">
              <td tal:content="item_child/text">item_child name</td>
            </tr>
          </table>
        </td>
      </tr>
    </table>code:
    $tal->set("result", $ar);
    print_r($tal->execute());
      

  13.   

    smarty,比较笨的写法~吼吼,简单的都被人写过了~~$ar = array(
    array('char' => 'A',
    'child' => array(
    array('text' => 'aa'),
    array('text' => 'aaa'),
    )
    ),
    array('char' => 'B',
    'child' => array(
    array('text' => 'bb'),
    array('text' => 'bbb'),
    )
    ),
    );
    $tpl->assign("ar", $ar);
    $tpl->display('test.htm');-------------------
    {$ar[0].char}<br>
    {$ar[0].char.child[0].text}<br>
    {$ar[0].char.child[1].text}<br>
    {$ar[1].char}<br>
    {$ar[1].char.child[0].text}<br>
    {$ar[1].char.child[1].text}<br>
      

  14.   

    test.html<!-- BEGIN container -->
    {container.char}<br/>
    <!-- BEGIN box -->
    {box.text}<br/>
    <!-- END box -->
    <!-- END container -->
    test.php$tpl = new template('./','./');
    $tpl->set_file('test',"test.html");
    foreach($ar as $_ar){
    $tpl->set_block_var('container','char',$_ar['char']);
    foreach($_ar['child'] as $__ar){
    $tpl->set_block_vars('container.box',$__ar);
    }
    }
    $tpl->pparse('test');