为什么可以';t我在Smarty中访问此数组


Why can't I access this array in 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>

有或没有CCD_ 1都不会在浏览器中给出输出。

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


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

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

数组值本身不是数组(您的数组不是多维的),所以您应该删除|@print_r:1,这样就可以了。应该看起来像:

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

终于想通了。数组键包含单引号,因此答案是:

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

我修复了它,这样键就不再包含引号了。