用另一个带有smarty的关联数组创建一个关联数组

时间:2014-02-13 21:16:35

标签: arrays smarty associative

所以我有一个关联数组{$ join_options},其中已有五个条目。

如果我转储$ join选项,它将显示:

19 => Some text for 19
20 => Some text for 20
22 => Some text for 22
24 => Some text for 24
26 => Some text for 26

到目前为止很好。

如果我只使用{$join_options.20},则会打印

20的一些文字

然后我尝试这个小曲子:

{assign var=modified_join_options values=[
20 => '$join_options.20',
24 => '$join_options.24',
26 => '$join_options.26',
]}

我收到此错误:

syntax error: invalid attribute name: ''$join_options.20',' (Smarty_Compiler.class.php, line 1550)

我尝试了多种不同的方法来输入$ join_options.20我试过''没有{}而没有Wat?

编辑:我尝试使用值而不是值添加反引号,删除最后一个逗号。现在我明白了:

Smarty错误:[在网站:加入第116行]:语法错误:无效的属性名称:'='(Smarty_Compiler.class.php,第1550行)

3 个答案:

答案 0 :(得分:0)

这是因为它里面有.。您必须使用backticks包围变量。试试这个。

{assign var=modified_join_options values=[
20 => '`$join_options.20`',
24 => '`$join_options.24`',
26 => '`$join_options.26`',
]}

http://www.smarty.net/docsv2/en/language.syntax.quotes.tpl

答案 1 :(得分:0)

使用值,删除引号和最后一个逗号,它将起作用:

{assign var=modified_join_options value=[
20 => $join_options.20,
24 => $join_options.24,
26 => $join_options.26
]}

答案 2 :(得分:0)

所以,我最后创建了一个smarty函数,我将智能对象和数组作为params传递给了我。在插件的功能内部,我进行操作,然后使用smarty对象使用foreach键值循环,if语句,strpos()和strtolower()函数将我想要的选项分配给新数组。相当标准的PHP东西。我不知道这是否是smarty的标准程序,但我发现了一些有用的文档,我正在使用的软件,并告知这是一个选项。