2010-08-05 3 views
0

Я пытаюсь выполнить следующую работу цикла. В принципе, я пытаюсь отобразить детей в качестве опций. Почему это не работает? Отображаются группы параметров. И массивы построены правильно.Цикл через двумерный массив с Smarty

{foreach from=$tpl_parents item='row' key='i'} 
    <optgroup label="{$row.NAME}"> 
     {foreach from=$tpl_children.$i item='child' key='y'} 
      <option value="{$y}">{$child.VALUE}</option> 
     {/foreach} 
    </optgroup> 
{/foreach} 

Массив Я пытаюсь Переберите построен таким образом: Родитель массив:

array(328) { 
[0]=> 
    array(42) { 
    ["ID"]=> 
    string(4) "123" 
    ["NAME"]=> 
    string(6) "blabla" 
    ... 
    ... 

Детский массив:

array(192) { 
    [123]=> 
    array(2) { 
     [881]=> 
     array(11) { 
      ["CHILD_ID"]=> string(5) "881" 
      ["PARENT_ID"]=> string(4) "123" 
      ["VALUE"]=> string(2) "No" 
    ... 
    ... 
+0

Если вы не использовали Smarty, я бы предложил использовать «RecursiveIterator» ... – ircmaxell

ответ

3

Похоже, что вам нужно гнездо другой Еогеасп в чтобы получить фактический массив дочерних элементов:

{foreach from=$tpl_parents item='row' key='i'} 
    <optgroup label="{$row.NAME}"> 
     {foreach from=$tpl_children.$i item='child' key='j'} 
      {foreach from=$child item='child_item' key='y'} 
       <option value="{$y}">{$child_item.VALUE}</option> 
      {/foreach} 
     {/foreach} 
    </optgroup> 
{/foreach} 

Немного сложно разобраться, поскольку предоставленные вами массивы не являются полными и не имеют связанных с ними имен переменных. например. $row = array('blah');

Смежные вопросы