在ColdFusion结构(数组)中创建键的正确语法是什么?最好在cfscript标签中。
为了更清楚地了解我要做什么,以下是我认为的可能:
StructInsert(account[i], "child[numChildren]", z);
其中“子”应该是一个数组,而numChildren是一个循环中的计数器。
显然,这是行不通的。这只是给我一个错误,指出键“ child [numChildren]”已经存在。
最佳答案
您说一个称为“子级”的“帐户”结构,该结构是一个数组。这没有任何意义。如果“子级”是数组,则不能是结构。如果是结构,则不能是数组。数组可以包含结构,而结构可以包含数组。
结构是映射或哈希,换句话说,它由名称/值对组成。数组是值的集合或列表。您可以循环浏览它们,或通过它们的数字索引访问它们。
让我们将一个结构体作为帐户,并将一个子级作为数组。
<cfset Account = structNew() />
<cfset Account.Child = ArrayNew(1) />
Account是一个结构,因此可以在其上使用结构函数(structKeyExists,structInsert)。
Account.Child是一个数组,因此您可以在其上使用数组函数(arrayAppend等)。 Account.Child是一个数组,可以在一个条目中包含几乎所有值,包括复杂值。因此,让Account.Child成为结构数组。
假设您的示例中的z是一个看起来像这样的结构:
<cfset z = structNew() />
<cfset z.id = 1 />
<cfset z.name = "James" />
您可以将其添加到Account.Child中,如下所示:
<cfset ArrayAppend(account.child,z) />
或者,您可以直接通过索引进行操作,如下所示:
<cfset account.child[numChildren] = z />
现在。假设您要保留“帐户”结构,但要为结构中的每个子项保留1个键,而不要使用数组。您可以使用动态键来做到这一点,如下所示:
<cfset Account["child_#numChildren#"] = z />
仅供参考,structInsert通常是不必要的功能。
关于arrays - ColdFusion结构中的阵列键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3282189/