main.tpl
:
{$array=['first']}
{include file="sub.tpl"}
{var_dump($array)}
sub.tpl
:
{$array[]='second'}
{var_dump($array)}
结果:
array (size=2)
0 => string 'first' (length=5)
1 => string 'second' (length=6)
array (size=1)
0 => string 'first' (length=5)
如何通过引用传递$array
,以便在'second'
完成后$array
也在include
中?
答案 0 :(得分:0)
有解决方案,但你应该重新考虑你的Smarty用法。 Smarty应仅用于显示数据,实际上您有时需要创建临时变量,并且创建/附加到数组似乎不是这种情况。
如果可能的话,您应该始终准备要在PHP和Smarty中显示的数据,您应该在不进行复杂计算和分配的情况下显示它们。
在您的情况下,您需要使用scope
,因此您应该使用:
{$array[]='second' scope='global'}
如上所述范围global
或范围parent
。
然而,正如我所说,你很可能在PHP中做得更好。