如何从2个字符串中调用变量

时间:2011-07-08 17:49:16

标签: php smarty

我有这个:

string {$one} = "$hello_"
string {$two} = "world"

如何从上面两个字符串变量中调用变量$hello_worldcapture对我不起作用。

使用Smarty v2.5

3 个答案:

答案 0 :(得分:1)

来自documentation

{$foo_{$x}}  // will output the variable $foo_1 if $x has a value of 1.

所以,你想要:

{${$one}{$two}}

由于不允许使用此功能,我建议使用smarty plugin来模仿您想要的行为。模板插件只是简单的php函数,通过$smarty->loadPlugin()方法调用。

答案 1 :(得分:1)

{$ {$ foo} {$ bar}}只适用于Smarty3。在Smarty2中,您必须为此编写一个插件(或者只是搜索智能论坛,因为那里有很多解决方案......)

答案 2 :(得分:0)

Smarty 2.x不支持变量。

smarty中的变量实际上存储在smarty对象中,因此您需要在Smarty中明确支持使用方便的标准变量变量语法。

以下是Smarty 2.x中我能想到的最好成绩。它使用PHP块为您存储组合结果的值。

{assign var="one" value="hello_"}
{assign var="two" value="world"}
{assign var="hello_world" value="HELLO!"}

{php}
    $varname = $this->get_template_vars('one').$this->get_template_vars('two');
    $this->assign('result', $this->get_template_vars($varname));
{/php}

{$result}

然而,如上所述,您必须在$的值的开头删除$one。否则,您需要将其修改为以下行:

$varname = substr($this->get_template_vars('one'),1).$this->get_template_vars('two');