【问题标题】:Loop through two dimensional array with Smarty使用 Smarty 循环遍历二维数组
【发布时间】:2010-08-05 16:45:14
【问题描述】:

我正在尝试使以下循环工作。基本上,我试图将孩子显示为选项。为什么它不起作用?正在显示选项组。并且数组的构造方式正确。

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

【问题讨论】:

  • 如果您不使用 Smarty,我建议您使用 RecursiveIterator...

标签: php loops multidimensional-array smarty


【解决方案1】:

看起来您需要在其中嵌套另一个 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');

【讨论】:

    猜你喜欢
    • 2014-12-22
    • 2018-11-02
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多