gpt4 book ai didi

coldfusion - 创建结构数组的问题

转载 作者:行者123 更新时间:2023-12-03 23:03:25 26 4
gpt4 key购买 nike

我正在制作一个博客 API,并且在尝试在 Coldfusion 中创建一个结构数组时遇到了一些非常奇怪的问题。顶级数组将包含帖子,作为结构,带有 .comments 是该帖子下所有评论的数组,也作为结构。

以下代码中的每个部分都单独工作。但是,不知何故,当我将它们放在一起时,我最终得到了一个无限嵌套的结构数组,其中包含一个结构数组等等……所有这些都只是顶级帖子数组中的最后一个元素。

<cfset posts = VARIABLES.postDao.getBlogPosts(argumentCollection=arguments) />
<cfset result = arraynew(1) />

<cfloop index="i" from="1" to="#arrayLen(posts)#">
<cfset post = posts[i].getInstance()>
<cfset StructInsert(post, 'comments', getComments(post.postId))>
<cfset ArrayAppend(result, post)>
</cfloop>

getBlogPosts 返回一组 Post bean。
bean.getInstance() 返回一个包含 bean 中所有数据的结构。
getComments(id) 为 post[id] 返回一个数组 all comments(structs)。

这些中的每一个都按预期工作,并且可以在其他地方使用而没有问题。

无限嵌套数组的结构如下:
Array containing Post  
. Post.comments containing array of comments + Post on end
. . Post.comments containing array of comments + Post on end
. . . etc...

最佳答案

您没有显示整个代码。

我怀疑用其中任何一个替换您显示的内容将解决问题:

<cfset local.posts = VARIABLES.postDao.getBlogPosts(argumentCollection=arguments) />
<cfset local.result = arraynew(1) />

<cfloop index="local.i" from="1" to="#arrayLen(local.posts)#">
<cfset local.post = local.posts[local.i].getInstance()>
<cfset StructInsert(local.post, 'comments', getComments(local.post.postId))>
<cfset ArrayAppend(local.result, local.post)>
</cfloop>

或者:
<cfset var posts = VARIABLES.postDao.getBlogPosts(argumentCollection=arguments) />
<cfset var result = arraynew(1) />
<cfset var i = 0 />
<cfset var post = 0 />

<cfloop index="i" from="1" to="#arrayLen(posts)#">
<cfset post = posts[i].getInstance()>
<cfset StructInsert(post, 'comments', getComments(post.postId))>
<cfset ArrayAppend(result, post)>
</cfloop>

您应该 总是 对 cffunction 中的变量使用 var 关键字或局部作用域。

您可以使用 VarScoper检查其他需要修复的地方的代码。

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

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