2013-10-19 49 views
2

我已經習慣了ColdFusion。看起來,cfscript讓開發人員的生活更輕鬆。如何從cfscript函數返回對象列表

在我CFSCRIPT功能,我需要:

  1. 運行查詢「選擇A,B從MyTable的」
  2. 對於該查詢的每一行,創建具有三個飛一個新的組件屬性A,B和C.這裏,C是在函數內計算的。
  3. 返回新組件的數組。

這裏是僞代碼:

<cfquery name="myq" datasource="mydsn"> 
    SELECT A, B 
    FROM MyTable 
</cfquery> 

<cfscript> 
function MyFunc() { 
    // Do the magic and return the array 
} 
</cfscript> 

我猜我會用這個功能我會用一個查詢:

<cfset myarray=MyFunc() /> 
<cfloop index="i" from="1" to="#arrayLen(myarray)#"> 
    #myarray.A# <br /> 
    #myarray.B# <br /> 
    #myarray.C# <br /> 
</cfloop> 

我將不勝感激,如果你可以建議我怎麼能做到這一點。我一直在搜索Adobe文檔,但沒有找到一個我可以涉及的好例子。預先感謝您的幫助。

+0

你知道你的cfloop中的語法錯誤,對吧? – duncan

+0

我不完全確定CFSCRIPT在這種情況下讓自己的生活更輕鬆。你可以使用CFFUNCTION標籤來編寫你的函數。 –

+1

除非輸出數據,否則'cfscript'總會讓人更容易。 –

回答

1

你可能要像

<cfoutput> 
<cfloop index="i" from="1" to="#arrayLen(myarray)#"> 
    #myarray.A[i]# <br /> 
    #myarray.B[i]# <br /> 
    #myarray.C[i]# <br /> 
</cfloop> 
</cfoutput> 

總體而言,你應該考慮返回的查詢,而不是一個數組

<cfscript> 
    query function MyFunc() { 
    // Do the magic and return the array 
    } 
</cfscript> 

然後通過拇指的

<cfset myQuery = MyFunc()> 

<cfoutput query="myQuery"> 
     #A# <br /> 
     #B# <br /> 
     #C# <br /> 
</cfoutput> 

一個規則處理它ColdFusion是:查詢比結構數組更強大。你可以用這種方式處理它們,但是你會錯過一些非常強大的功能,例如<cfoutput>迭代查詢。

+1

James。感謝您的幫助。在我的情況下,我必須做一些在SQL查詢下無法實現的複雜計算。問候。 – Peter