Coldfusion 创建结构数组很麻烦
我正在尝试在Application.cfm文件中创建一个结构数组,然后可以在以后的页面中附加到该数组中。我正在跟踪调查。我是这样使用它的:Coldfusion 创建结构数组很麻烦,coldfusion,coldfusion-11,Coldfusion,Coldfusion 11,我正在尝试在Application.cfm文件中创建一个结构数组,然后可以在以后的页面中附加到该数组中。我正在跟踪调查。我是这样使用它的: <cfset session.box_status = arrayNew(1) /> <cfset session.box_status[1] = structNew() /> <cfset session.box_status[1].partner_id = '0' /> <cfset session.box_st
<cfset session.box_status = arrayNew(1) />
<cfset session.box_status[1] = structNew() />
<cfset session.box_status[1].partner_id = '0' />
<cfset session.box_status[1].partner_username = '' />
<cfset session.box_status[1].status = '0' />
arrayAppend()
中的第一个参数需要是要向其追加内容的数组,在您的示例中,您使用的是i
——它是循环的计数器——它是一个数字,而不是数组。此外,您需要澄清您实际想要实现的目标。该问题询问附加一个新项,但代码的某些部分似乎试图覆盖位置session.box\u status[1]
中的现有结构值
如果您真的想将一个新结构附加到数组中,就没有理由循环。只需创建一个空结构:
<cfset newItem = structNew() />
更新:
也就是说,您使用的教程显然是为旧版本的CF编写的。正如@cfqueryparam指出的,更高版本支持创建数组和结构的速记。您不必使用structNew()
,只需执行以下操作:
<cfset newItem = { partner_id = FORM.partner_id, ... etectera }>
请注意,一个常见错误是传递数组名称,但忘记放置磅符号。对我来说,当我说错话的时候
而不是正确的表达
发出数组时,调试消息java.lang.string不能使用。检查文档中的
ArrayAppend()
,您用错了。得到答案了吗?他们的答案似乎与我刚才所说的完全相同。因此,我尝试使用session.box\u status[I].status
而不是I
,但没有用。因为您仍然没有传递数组session.box_status[i]。status
不是数组。请注意:根据cf的版本,您甚至可以使用隐式(简写)结构/数组创建(其中“[]”创建空数组,{}创建空结构),如cf8及以上版本中的
,以及cf10及以上版本中的
。在此之前,创建更大的结构或数组是一项单调的任务。这是针对询问者的,而不是@Leigh,他无疑知道这一点。@cfqueryparam-捕捉得好。根据它们的原始语法,我只是假设它们使用的是不支持“{}”和“[]”的旧版本。然而,我现在看到他们的版本是CF11。我将更新我的答案以使用“更好”的语法;-)
<cfset newItem = structNew() />
<cfset newItem.partner_id = FORM.partner_id>
... etcetera
<cfset ArrayAppend(session.box_status, newItem)>
<cfset newItem = { partner_id = FORM.partner_id, ... etectera }>
<cfloop array="myAry" index="aryElement">
<cfloop array="#myAry#" index="aryElement">