为什么我不能在Smarty中访问这个数组?

时间:2012-01-27 09:12:44

标签: php smarty

在Smarty模板中给出了这个:

<pre>{$user->settings['sendStats']|@print_r:1}</pre>

浏览器中的输出是:

Array
(
    ['period'] => daily
    ['ofPeriod'] => year
    ['points'] => 1000
)

执行以下任何操作:

<pre>{$user->settings['sendStats']['period']|@print_r:1}</pre>
<pre>{$user->settings['sendStats'][ofPeriod]|@print_r:1}</pre>
<pre>{$user->settings['sendStats'].points|@print_r:1}</pre>
<pre>{$user->settings.{'sendStats'}.{'period'}|@print_r:1}</pre>
<pre>{$user->settings.{sendStats}.{period}|@print_r:1}</pre>

有或没有|@print_r:1在浏览器中没有输出。

我还尝试将$user->settings分配给Smarty变量,并得到完全相同的结果(如预期的那样)。


如何访问$user->settings['sendStats']数组的元素?

3 个答案:

答案 0 :(得分:1)

{$user->settings.sendStats.period|@print_r:1}应该可以正常工作。另请查看文档中的Variables页面...

答案 1 :(得分:0)

数组值本身不是数组(你的数组不是多维的),所以你应该删除|@print_r:1,你应该没问题。应该看起来像:

<pre>{$user->settings['sendStats']['period']}</pre>

答案 2 :(得分:0)

终于明白了。数组键包含单引号,所以答案应该是:

{$user->settings['sendStats']["'period'"]}

我修复了它,所以键不再包含引号。