2012-08-09 71 views
0

我正在循環收集(表單)並在表單字段名稱中測試'attachedFile'。成功時,我想將表單字段值添加到數組中。目前,我只獲取表單字段名稱而不是值。從收集循環獲取表單字段值

<cfloop collection="#FORM#" item="field"> 
    <cfif FindNoCase('attachedFile',field) IS 1> 
     <cfset fileNamesArray[fileNamesIndex] = field> 
     <cfset fileNamesIndex = fileNamesIndex + 1> 
    </cfif> 
</cfloop> 

我試圖設置數組在索引[任何]到#form.field#但這會導致錯誤(未定義)。任何想法如何讓我的價值在這個循環內?謝謝。

+1

僅供參考,有'ArrayAppend()',你可以,如果你只是將事情到一個數組中使用。 – Henry 2012-08-09 18:34:05

+0

FWIW - 錯誤可能是因爲您在循環之前未初始化索引變量。但是,正如亨利所說的,'arrayAppend'非常簡單,即'arrayAppend(fieldNamesAray,FORM [field]);' – Leigh 2012-08-09 20:58:00

回答

2
<cfloop collection="#Form#" item="field"> 
    <cfset currentFieldName = field> 
    <cfset currentFieldValue = Form[field]> 
</cfloop> 

http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7fe2.html

或者如果你喜歡劇本風格,並且正在使用CF9,使用for-in循環

<cfscript> 
    for (field in Form) 
    { 
     currentFieldName = field; 
     currentFieldValue = Form[field]; 
    } 
</cfscript> 
+0

如何設置cfdump等於一個變量? – 2012-08-09 18:12:56

+1

cfdump只是向您說明您可以使用'Form [field]'來訪問該字段的值。要將其設置爲var,請使用' Henry 2012-08-09 18:21:18

+0

好的,我誤解了你。 – 2012-08-09 18:27:58

1

ColdFusion的10或Railo 4,你可以使用在Underscore.cfc library在CFSCRIPT的filter()功能,像這樣:

var fileNamesArray = _.filter(form, function (value, field) { 
    return FindNoCase('attachedFile', field); 
}); 

filter()函數返回一個通過真值測試的值數組,在這種情況下,該值爲FindNoCase(...)。

使用功能樣式編程會產生更優雅和更具表現力的解決方案。

(注:我寫Underscore.cfc)