2010-08-05 214 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');