聪明的语法错误:变量在我的变量中


Smarty syntax error: variable in my variable

我对Smarty有问题。我必须引用一个具有特定键的数组。让我解释一下。此字符串包含我想要的值

{$array1.something[$key].id}

同时,另一个包含

{$array2.something[$key].id}

我想以这种方式将两者结合起来:

{$array1.something[$array2.something[$key].id].id}

相信我,它在PHP中运行得很好,但我无法在Smary中翻译这个逻辑,因为它给了我一个致命的错误。

致命错误:Smarty错误-语法错误:无法识别的标记:第1094行上Smarty.class.php中的$array1.something[$array2.something[%key].id].id(Smarty_Compiler.class.php,第448行(

让我试着用一个例子让它变得更加简单。

1. {$array2.something[$key].id} returns 18 (the key)
2. {$array1.something[$array2.something[$key].id].id} then would be {$array1.something[18].id} 
3. {$array1.something[18].id} should return 999 (the value) but instead of this it gives me a fatal error

正如你所理解的,这只是一个语法错误。我应该如何写这份声明?

检查{assign}http://www.smarty.net/docs/en/language.function.assign.tpl

使keyVal=18

{assign "keyVal" $array1.something[$key].id}

然后输出您想要的值

{$array1.something[$keyVal].id}