我正在做一個博客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'範圍內,並且每個函數都有自己的本地範圍,它只存在於該函數中。 –