2010-08-05 148 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 2010-08-05 16:59:33

回答

3

看起来你需要嵌套另一个的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');