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

问题描述 投票:1回答:1

这一行:

{$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}

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

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

php arrays smarty
1个回答
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中)。尽管如此,在todo列表上扔了它。

© www.soinside.com 2019 - 2024. All rights reserved.