聪明的语法错误不能使用符号[]

时间:2012-06-29 06:46:20

标签: php arrays smarty

这一行:

{$data["bank_data"]["Arrangement"]["id"]}

返回以下错误:

  

PHP(5.3.9)错误(E_USER_ERROR):
  文件:Smarty.class.php
  行:1092
  类型:Smarty错误:[在tke-g-admin_scopeofwork.tpl第10行]:语法错误:无法识别的标签:$ data [“bank_data”] [“安排”] [“id”](Smarty_Compiler.class.php,第446行) )

这一行:

{$data.bank_data.Arrangement.id}

不会返回错误。它工作正常。

那么,为什么第一部分是错的呢?如何使用[]访问数组。

1 个答案:

答案 0 :(得分:1)

从您发布的错误判断,您正在使用Smarty2。 The Docs为您提供了两种访问数组的选项:

{* for string indexes *}
{$some.array.value}
{* for numeric indexes *}
{$some[0][1]}

您可以使用变量来提供类似的索引

{assign var="key" value="array"}
{$some.$key.value} == {$some.array.value}

使用“技巧”,您还可以访问包含“特殊字符”的字符串索引,例如.[]


Smarty3以这种方式更灵活:

{$some.{"hello world"}.array["array"]['foo']}

奇怪的是,{$foo[bar]}未被正确解析(在Smarty 3.1.10中)。不过,把它扔在了待办事项列表上。