Цикл двухмерного массива с Smarty - PullRequest
0 голосов
/ 05 августа 2010

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

{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"
    ...
    ...

1 Ответ

3 голосов
/ 05 августа 2010

Похоже, вам нужно вложить еще один foreach, чтобы получить реальный массив дочерних элементов:

{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');

...