我試圖在Coldfusion中創建一個遞歸函數,並且遇到了一些問題。Coldfusion中的遞歸函數
這裏是我的邏輯:
<cffunction name="getEvents" access="private">
<cfargument name="strtdate">
<cfargument name="parentID" default=0>
<cfqeury name="qry" datasource="db">
select *
from table
where parentid = #parentid# and
starttime between #strtdate# and #DateAdd('d', 1, strtdate)#
</cfquery>
<cfset events = arraynew(1)>
<cfloop query="qry">
<cfset events[qry.currentrow] = structnew()>
<cfset events[qry.currentrow].id = qry.id>
<cfset subevents = getEvents(strtdate, qry.id)>
<cfif arraylen(subevents)>
<cfset events[qry.currentrow].subevents = subevents>
</cfif>
</cfloop>
<cfreturn events>
</cffunction>
的問題是,一旦函數調用自身,一旦失去在循環原始查詢。我現在的事件是三個層面的深度,但我不想糾正一遍又一遍地處理所有事件。
我想結束一個包含給定日期的所有事件和子事件的結構數組。
並解釋爲什麼這是重要的將有助於未來的人。爲什麼這個問題是由var變量的變量範圍造成的? – 2010-09-27 21:19:14
謝謝。那就是訣竅。我在我的代碼中有CFQueryParam,但我不想寫更多,然後我需要在這裏。 – 2010-09-27 21:40:39
Edward,我剛剛發現這個http://www.garyrgilbert.com/tutorials/coldfusion/beginner/scope.cfm – 2010-09-27 21:48:42