2017-03-07 32 views
0

我是ColdFusion的初學者,想從循環內向數組附加值。我寫了這段代碼,但它不適合我。如何在Coldfusion中追加< cfloop>的數組值?

<cfset myArray = arrayNew(1)> 
<cfloop query="displayQ" > 
    <cfquery name="fileListQ" datasource="#REQUEST.datasource#"> 
     select 
      project_id, 
      doc_id, 
      file_name, 
      file_size, 
      status, 
      status_date, 
      timestamp, 
      upload_date 
     from project_documents 
     where 
      project_id = "#displayQ.project_id#" 
      <cfif bitAnd(SESSION.rights,structFind(rightsList,"RIGHTS_ADMIN")) EQ 0 
        AND bitAnd(SESSION.rights,structFind(rightsList,"RIGHTS_ENOVIS_PS")) EQ 0 > 
       and status = 3 
      </cfif> 
    </cfquery> 
    <cfloop query="fileListQ"> 
     <tr> 
      <CFSET myArray=ArrayAppend(myArray,#fileListQ.doc_id#,"true"); /> 
      <td><span class="FAKELINK" onClick="doReport('#fileListQ.file_name#','#fileListQ.doc_id#')"> 
        #fileListQ.file_name# 
       </span> 
      </td> 
     </tr> 
    </cfloop> 
</cfloop> 
+0

有關arrayAppend的文檔將會有一個示例顯示如何正確使用它。話雖如此,鑑於數組函數在cfquery列上工作,您可能不需要另一個變量。最後,在另一個查詢的循環內運行查詢幾乎總是一個非常糟糕的主意。如果數據源相同,請考慮只能使用一個查詢獲取數據的方法。 –

+0

我已閱讀文檔也閱讀一些文章。你可以幫助我如何編寫和使用列表? – vinny

+0

List var與where子句一起使用與另一個查詢 – vinny

回答

2

你沒有描述代碼如何不適合你,但我的猜測是在這一行。

<CFSET myArray=ArrayAppend(myArray, #fileListQ.doc_id#, "true"); /> 

您的ArrayAppend()函數調用的返回值設置爲您的數組變量myArray但函數返回的成功或失敗的布爾。所以你的數組被來自調用的布爾返回值覆蓋。好像你只需要改變它的東西,如:

<CFSET booleanDidItWork=ArrayAppend(myArray, fileListQ.doc_id, "true") /> 

還要注意,當變量作爲函數調用這樣的一部分#不需要英鎊的跡象。

使用這樣的標籤語法時不需要分號。這些僅在編寫cfscript語法時需要。

一些ColdFusion函數按照他們嘗試過的方式工作,但其他的卻不行。這就是爲什麼當你嘗試使用它時需要閱讀有關函數的文檔。

說明

追加的數組元素的數組。當merge參數設置爲true並且value參數是數組時,連接數組。

返回

不錯,就順利完成。

類別

數組函數

功能語法

ArrayAppend(數組,值[,合併])

ArrayAppend documentation

+0

我真的很感激你告訴我什麼時候我沒有解釋正確的問題,儘管給了我適當的解決方案,所有的幫助你給我...謝謝 – vinny

+0

不客氣。很高興幫助你。 –