我正在做一个博客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]返回数组所有注释(结构)。
每个作品如预期,并在别处使用没有问题。
无限嵌套数组的结构是这样的:
Array containing Post
. Post.comments containing array of comments + Post on end
. . Post.comments containing array of comments + Post on end
. . . etc...
你VAR /本地作用域的变量? –
我不是,但增加了变量范围的变量固定它。我诚恳地不承认如何修复它。 – Phil
当你没有作用域时,ACF将它们中的每一个都放在共享变量的作用域中,因此该组件中的每个函数都访问相同的变量。所以当你循环调用更多的函数时,你的初始变量每次都被覆盖。当你使用var关键字时,它将它们放到'local'范围内,并且每个函数都有自己的本地范围,它只存在于该函数中。 –