Разобрать многоуровневый массив для просмотра файла - PullRequest
0 голосов
/ 11 апреля 2011

Мне нужно проанализировать многоуровневый массив для моего файла представления.

Мой массив может выглядеть следующим образом:

$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}

Моя проблема в том, что это покажет только первый уровень - я хочу иметь неограниченные уровни .. Это возможно без обходного пути, когда я создаю HTML в PHP-файлеа затем передает HTML в файл представления?

1 Ответ

0 голосов
/ 12 апреля 2011

Звучит так, как будто вам нужно немного рекурсии.

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'.Я не знаю, какую систему шаблонов вы выбрали для своего механизма просмотра, но большинство из них допускают аналогичные рекурсивные вызовы.

...