0

コレクション(フォーム)をループして、フォームフィールド名の「attachedFile」をテストしています。成功したら、フォームフィールドの値を配列に追加します。現在、フォームフィールド名のみを取得しており、値は取得していません。

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

インデックス[whatever]の配列を#form.field#に設定しようとしましたが、エラー(未定義)が発生します。このループ内で私の価値を得る方法について何かアイデアはありますか?ありがとう。

4

2 に答える 2

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>
于 2012-08-09T18:03:19.950 に答える
1

Coldfusion 10 または Railo 4 では、次のように cfscriptでUnderscore.cfc ライブラリのfilter()関数を使用できます。

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

filter() 関数は、真偽テストに合格した値の配列 (この場合は FindNoCase(...)) を返します。

関数型プログラミングを使用すると、よりエレガントで表現力豊かなソリューションが得られます。

(注: Underscore.cfc を書きました)

于 2012-08-10T09:52:08.267 に答える