Smarty:正确的阵列缺失密钥

时间:2011-08-10 17:59:55

标签: php arrays smarty multidimensional-array

我通过PHP调用API,返回一个多维数组[ $ myArray ]。

我想传递这个数组以供我的Smarty模板使用,但由于某种原因,数组在没有第一个维度键的情况下返回。

当我在PHP中的 $ myArray 上print_r时,我得到:

Array ( 
   [success] => 1 
   [errors] => 0 
   [data] => Array ( 
       [0] => Array ( 
                [email] => myemail@email.com
                [id] => hhd77sjr
                [timestamp] => 2011-08-10 16:31:29 
       ) 
   ) 
)

我将此数组指定为: $smarty->assign('my_array',$myArray);

然后当我通过{$my_array|print_r}访问我的Smarty模板中的 my_array 时,我得到了:

1
0
Array ( 
    [0] => Array ( 
       [email] => myemail@email.com
       [id] => hhd77sjr
       [timestamp] => 2011-08-10 16:31:29
    )
)

我的键[成功],[错误]和[数据]值发生了什么变化?我只看到了价值观。如何通过以下内容访问这些值:{$my_array.success}

感谢您的帮助!!

2 个答案:

答案 0 :(得分:0)

如果你在google上搜索“smarty array”,你可以找到:

<ul>
{foreach from=$myArray key=k item=v}
   <li>{$k}: {$v}</li>
{/foreach}
</ul>

http://www.smarty.net/docsv2/en/language.function.foreach

答案 1 :(得分:0)

不考虑来源,我猜测它与Smarty如何显示print_r()的结果有关。默认情况下,print_r尝试直接输出,但查看PHP文档:

  

如果要捕获print_r()的输出,请使用return参数。当此参数设置为TRUE时,print_r()将返回信息而不是打印信息。

Source

您当然应该能够正常访问所有值,即{$my_array.success}

如果您想再次尝试print_r,请尝试以下操作:{$my_array|print_r:true}(将返回参数设置为true)。