你如何在smarty中访问嵌套数组?

时间:2014-12-31 17:08:11

标签: php templating smarty2

所以,我正在使用Smarty2并且不知道Smarty。我试着去学习它。  我有这样的数组结构(来自Var转储)

array(59) {
    [0]=> array(4) {
        [0]=> string(10) "CCX 4PLY"
        [1]=> string(3) "SYP"
        [2]=> string(4) "4X8 "
        [3]=> array(6) {
            [0]=> string(0) ""
            [1]=> string(0) ""
            [2]=> string(0) ""
            [3]=> int(761)
            [4]=> string(0) ""
            [5]=> string(0) ""
        }
    }
    [1]=> array(4) {
        [0]=> string(5) " CCX"
        [1]=> string(3) "SYP"
        [2]=> string(4) "4X8 "
        [3]=> array(6) {
            [0]=> string(0) ""
            [1]=> string(0) ""
            [2]=> string(0) "" 
            [3]=> string(0) ""
            [4]=> int(823)
            [5]=> int(937)
        }
    }
    ...
}

阵列要长得多,但这应该足以让你知道我的目标。如您所见,在每个数组中,还有另一个数组可以提供商品价格。有时没有价格,但这很好。不应该在那些场合。 所以,我需要做的是显示与特定项目相对应的价格。这是我在smarty中的代码。

<table>
{foreach name=outer item=row from=$indLine}
<tr>
{foreach key=key item=item from=$row}
<td>{$item}</td>
{foreach key=price item=price from=$row}
<td>{$indLine[4]}</td>
{/foreach}
{/foreach}
</tr>
{/foreach}

我对数组的smarty变量是indLine。 indLine [4]是我试图获取价格的地方。我已经尝试将其更改为行等。没有任何作用。我在浏览器中显示的是以下内容。

  

CCX 4PLY阵列阵列阵列SYP阵列阵列阵列阵列4X8阵列阵列阵列阵列阵列阵列阵列           CCX阵列阵列阵列阵列SYP阵列阵列阵列阵列4X8阵列阵列阵列阵列阵列阵列阵列阵列           RSH 4-PLY阵列阵列阵列SYP阵列阵列阵列阵列4X8阵列阵列阵列阵列阵列阵列阵列           RSH阵列阵列阵列阵列SYP阵列阵列阵列阵列4X8阵列阵列阵列阵列阵列阵列阵列阵列           S / F 4-PLY阵列阵列阵列阵列SYP阵列阵列阵列4X8阵列阵列阵列阵列阵列阵列阵列        S / F SE阵列阵列阵列SYP阵列阵列阵列阵列4X8阵列阵列阵列阵列阵列阵列阵列

CCX 4PLY    0   SYP 0   4X8 0   Array   0
CCX 0   SYP 0   4X8 0   Array   0
RSH 4-PLY   0   SYP 0   4X8 0   Array   0
RSH 0   SYP 0   4X8 0   Array   0
S/F 4-PLY   0   SYP 0   4X8 0   Array   0
S/F SE  0   SYP 0   4X8 0   Array   0
RSH 3-PLY   0   SYP 0   4X8 0   Array   0
RSH 4-PLY   0   SYP 0   4X8 0   Array   0
RSH 0   SYP 0   4X8 0   Array   0
S/F 4-PLY   0   SYP 0   4X8 0   Array   0

1 个答案:

答案 0 :(得分:1)

我不确定每个值/数组代表什么以及您期望的输出类型,但请尝试以下方法:

<table>
{foreach name=outer item=row from=$indLine}
 <tr>
  {foreach key=key item=item from=$row}
  {if is_array($item)}
  {foreach key=key item=price from=$item}
  <td>{$price}</td>
  {/foreach}
  {else}
  <td>{$item}</td>
  {/endif}
  {/foreach}
 </tr>
{/foreach}

当您在foreach循环中时,使用由item定义的变量。我建议你在php中构建assocc数组,然后使用数组键打印你想要的数据,而不是盲目地遍历数组