gpt4 book ai didi

coldfusion - 创建结构数组令人不安

转载 作者:行者123 更新时间:2023-12-02 08:31:25 24 4
gpt4 key购买 nike

我正在尝试在我的 Application.cfm 文件中创建一个结构数组,然后可以将其附加到其他页面中。我正在关注 EasyCFM tutorial #173 by Charlie .我是这样使用它的:

<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' />

在我的页面中,我像这样附加到结构中:

<cfloop from="1" to="#arrayLen(session.box_status)#" index="i">
<cfset session.box_status[i].partner_id = ArrayAppend(i,FORM.partner_id) />
<cfset session.box_status[i].partner_username = ArrayAppend(i,FORM.partner_username) />
<cfset session.box_status[i].status = ArrayAppend(i,FORM.box_status) />
</cfloop>

但是我得到一个错误:

    The web site you are accessing has experienced an unexpected error.
Please contact the website administrator.

The following information is meant for the website developer for debugging purposes.
Error Occurred While Processing Request
Object of type class java.lang.Double cannot be used as an array

最佳答案

除了Scott's comments ,您需要阐明您实际想要实现的目标。该问题询问关于附加 一个新项目,但看起来您的部分代码试图覆盖 session.box_status[1] 位置的现有结构值

如果您真的想将一个 结构附加到数组,则没有理由循环。只需创建一个空结构:

<cfset newItem = structNew() /> 

...用一些值填充它:

<cfset newItem.partner_id = FORM.partner_id>
... etcetera

然后将新结构追加到数组中。注意,下面的代码不关心 ArrayAppend 的结果。这是因为该函数就地修改了数组,并且仅根据操作是否成功返回 true/false

<cfset ArrayAppend(session.box_status, newItem)>

更新:

也就是说,您使用的教程显然是为旧版本的 CF 编写的。正如@cfqueryparam 指出的那样,更高版本支持创建数组和结构的简写。除了使用 structNew(),您还可以简单地这样做:

 <cfset newItem = { partner_id = FORM.partner_id, ... etectera }>

关于coldfusion - 创建结构数组令人不安,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26450100/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com