2012-08-14 53 views
0

所以我通過PHP stdClass的()對象Smarty的,它看起來像這樣,例如:解析stdClass的()對象

stdClass Object 
(
    [1] => stdClass Object 
     (
      [id] => 1 
      [children] => stdClass Object 
       (
        [4123] => stdClass Object 
         (
          [id] => 4123 
          [children] => stdClass Object 
           (
            [221] => stdClass Object 
             (
              [id] => 221 
              [children] => stdClass Object 
               (
               ) 
             ), 
            [55] => stdClass Object 
             (
              [id] => 55 
              [children] => stdClass Object 
               (
               ) 
             ) 
           ) 
         ), 
        [666] => stdClass Object 
         (
          [id] => 666 
          [children] => stdClass Object 
           (
           ) 
         ) 
       ) 
     ) 
) 

每個對象都有一個ID和兒童,其中具有相同的結構。 如何使用Smarty遞歸地輸出所有的id-s:1, 4123, 221, 55, 666

回答

1

遞歸數據處理有兩種選擇。首選的解決方案是使用{function}。 SMARTY2兼容 - - 選擇是使用{}包括

{function name=printId comma=false data=false} 
    {if $comma}, {/if}{$object->id} 
    {foreach $data.children as $object} 
    {printId data=$object comma=true} 
    {/foreach} 
{/function} 

{* invoke with: *} 
{printId data=$yourObjectStructure} 

其他:

{* recursive-thing.tpl *} 
{if $comma}, {/if}{$object->id} 
{foreach from=$data.children item="object"} 
    {include file="recursive-thing.tpl" data=$object comma=true} 
{/foreach} 

{* invoke with: *} 
{include file="recursive-thing.tpl" data=$yourObjectStructure} 
沿着線的東西