将多级数组解析为视图文件

时间:2011-04-11 15:19:07

标签: php model-view-controller multidimensional-array html-parsing

我需要将多级数组解析为我的视图文件。

我的阵列可能是这样的:

$test = array(
    1 => array(
        10 => array('text' => 'test'),
        15 => array( 
            12 => array('text' => 'Test')
        ),
        'text' => 'Nr. 1'
    ),
    4 => array(
        14 => array('text' => 'Hello'),
        'text' => 'Nr. 4'
    )
)

这将传递给视图文件,如下所示:

{test}
    {text}
{/test}

我的问题是,这只会显示第一级 - 我希望拥有无限级别..如果没有解决方法可行,我在PHP文件中创建HTML然后将HTML传递给视图文件?

1 个答案:

答案 0 :(得分:0)

听起来你需要一点递归。

function recurse_output($input, $level = 0) {
    foreach($input as $key => $value) {
        echo "\n", str_repeat(" ", $level);
        echo "<div>{$key} is: ";
        if(is_array($value))
            recurse_output($value, $level + 1);
        else
            echo $value;
        echo str_repeat(" ", $level);
        echo "</div>\n";
    }
}

针对您的输入运行时,结果为:

<div>1 is: 
 <div>10 is: 
  <div>text is: test  </div>
 </div>

 <div>15 is: 
  <div>12 is: 
   <div>text is: Test   </div>
  </div>
 </div>

 <div>text is: Nr. 1 </div>
</div>

<div>4 is: 
 <div>14 is: 
  <div>text is: Hello  </div>
 </div>

 <div>text is: Nr. 4 </div>
</div>

除非$key'text',否则将代码修改为不发送任何内容应该非常简单。我不知道您为视图机制选择了哪个模板系统,但大多数允许类似的递归调用。