サーチ…


備考

大きなおかげで

CFMLタグを使用してコレクションをループします。

<!--- Define collection --->
<cfset attributes = {
  "name": "Sales",
  "type": "text",
  "value": "Connection"
}>

<!--- 
  cfloop tag with attribute collection can be used to 
  loop through the elements of a structure
--->
<cfloop collection=#attributes# item="attribute">
  <cfoutput>
    Key : #attribute#, Value : #attributes[attribute]#
  </cfoutput>
</cfloop>

CFSCRIPTを使用してコレクションをループします。

<cfscript>
  /*define collection*/
  attributes = {
    "name": "Sales",
    "type": "text",
    "value": "Connection"
  };
  for(attribute in attributes){
    /* attribute variable will contain the key name of each key value pair in loop */
    WriteOutput('Key : ' & attribute & ', Value : ' & attributes[attribute] & '<br/>');
  }
</cfscript>

インデックス

パラメーター

属性必須タイプデフォルト説明
索引真実文字列ループのインデックスの変数名。デフォルトはvariablesスコープです。
から真実数値インデックスの開始値。
真実数値インデックスの終了値。
ステップ数値 1 反復ごとにインデックスを増減する値。

基本索引ループ

x最終値は10です。

<!--- Tags --->
<cfoutput>
    <cfloop index="x" from="1" to="10">
        <li>#x#</li>
    </cfloop>
</cfoutput>
<!--- cfscript --->
<cfscript>
    for (x = 1; x <= 10; x++) {
        writeOutput('<li>' & x & '</li>');
    }
</cfscript>
<!--- HTML Output --->
 - 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10

ステップを2に増やす

x最終値は11です。

<!--- Tags --->
<cfoutput>
    <cfloop index="x" from="1" to="10" step="2">
        <li>#x#</li>
    </cfloop>
</cfoutput>
<!--- cfscript --->
<cfscript>
    for (x = 1; x <= 10; x += 2) {
        writeOutput('<li>' & x & '</li>');
    }
</cfscript>
<!--- HTML Output --->
 - 1
 - 3
 - 5
 - 7
 - 9

1ずつ減る

x最終値は0です。

<!--- Tags --->
<cfoutput>
    <cfloop index="x" from="10" to="1" step="-1">
        <li>#x#</li>
    </cfloop>
</cfoutput>
<!--- cfscript --->
<cfscript>
    for (x = 10; x > 0; x--) {
        writeOutput('<li>' & x & '</li>');
    }
</cfscript>
<!--- HTML Output --->
 - 10
 - 9
 - 8
 - 7
 - 6
 - 5
 - 4
 - 3
 - 2
 - 1

関数内のCFLoop

関数内のインデックスのvarまたはlocalスコープを確認してください。 Foo()は11を返します。

<!--- var scope --->
<cffunction name="foo" access="public" output="false" returntype="numeric">
    <cfset var x = 0 />
    <cfloop index="x" from="1" to="10" step="1">
        <cfset x++ />
    </cfloop>
    <cfreturn x />
</cffunction>

<!--- Local scope --->
<cffunction name="foo" access="public" output="false" returntype="numeric">
    <cfloop index="local.x" from="1" to="10" step="1">
        <cfset local.x++ />
    </cfloop>
    <cfreturn local.x />
</cffunction>

現在のColdFusion 11から

cfscript関数cfloopは、スタンドアローンカウンタメカニズムとしてのindexをサポートしていません。

調子

タグ構文

パラメーター

属性必須タイプデフォルト説明
調子真実文字列ループを管理する条件。 <>=などの数式記号は使用できません。同様に、ColdFusionのテキストの実装を使用しなければならないless thanltgreater thangtequals又はeq

x最終値は5です。

<cfset x = 0 />
<cfoutput>
    <cfloop condition="x LT 5">
        <cfset x++ />
        <li>#x#</li>
    </cfloop>
</cfoutput>

生成されたHTML

これは、HTMLの各行の間に改行もあります。

<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>

CFScript

ColdFusion 8以前

<cfscript>
x = 0;
while (x LT 5) {
    x = x + 1;
    writeOutput('<li>' & x & '</li>');
}
</cfscript>

現在のColdFusion 8から

<cfscript>
x = 0;
while (x LT 5) {
    x = x++;
    writeOutput('<li>' & x & '</li>');
}
</cfscript>

現在のColdFusion 11から

cfscript関数cfloopconditionサポートしていません。

生成されたHTML

cfscriptの出力はすべて1行にあることに注意してください。

<li>one</li><li>two</li><li>three</li><li>four</li>

日付または時間範囲

日付または時間範囲の例

クエリ

citystatecode 、およびzipcode列を含み、80,000を超えるレコードを持つテーブルdbo.state_zip考えてみましょう。

パラメーター

属性必須タイプデフォルト説明
クエリ真実文字列クエリオブジェクトの変数名。
スタートロー数値クエリオブジェクトの開始行インデックス。
エンドロー数値クエリオブジェクトの終了行インデックス。
グループ文字列レコードをグループ化するためのクエリ列名。

クエリの例

<cfquery name="geo" datasource="reotrans-dev">
    SELECT city, stateCode, zipCode
    FROM dbo.state_zip
</cfquery>

タグ構文

cfloopのソースとしてクエリオブジェクトgeoを使用する。テーブルdbo.state_zipは非常に多くのレコードがあるため、生成されるHTMLにはかなりの時間がかかります。この例では、最初の20レコード分のHTMLのみを示しています。

<cfoutput>
    <ul>
    <cfloop query="geo">
        <!--- Scope the column names with the query name. --->
        <li>#geo.city# | #geo.stateCode# | #geo.zipCode#</li>
    </cfloop>
    </ul>
</cfoutput>

生成されたHTML

<ul>
    <li>100 PALMS | CA | 92274</li>
    <li>1000 PALMS | CA | 92276</li>
    <li>12 MILE | IN | 46988</li>
    <li>1ST NATIONAL BANK OF OMAHA | NE | 68197</li>
    <li>29 PALMS | CA | 92277</li>
    <li>29 PALMS | CA | 92278</li>
    <li>3 STATE FARM PLAZA | IL | 61710</li>
    <li>3 STATE FARM PLAZA | IL | 61791</li>
    <li>30TH STREET | PA | 19104</li>
    <li>3M CORP | MN | 55144</li>
    <li>65TH INFANTRY | PR | 00923</li>
    <li>65TH INFANTRY | PR | 00924</li>
    <li>65TH INFANTRY | PR | 00929</li>
    <li>65TH INFANTRY | PR | 00936</li>
    <li>7 CORNERS | VA | 22044</li>
    <li>88 | KY | 42130</li>
    <li>9 MILE POINT | LA | 70094</li>
    <li>A A R P INS | PA | 19187</li>    
    <li>A A R P PHARMACY | CT | 06167</li>
    <li>A H MCCOY FEDERAL BLDG | MS | 39269</li>
</ul>

出力を特定の行に制限する

クエリの出力を特定の行範囲に制限するには、 startrowendrow指定します。

<cfloop query="geo" startrow="100" endrow="150">
    <li>#geo.city# | #geo.stateCode# | #geo.zipCode#</li>
</cfloop>

出力のグループ化

この例のデータでは、各状態に関連付けられている複数の都市に対して複数の同じ状態がリストされています。また、各都市に関連付けられている複数の郵便番号との関係で、同じ都市を複数回表示することもできます。

最初に出力を状態別にグループ化しましょう。 stateCodeグループ化されたコンテンツの下に出力されるコンテンツの周りにstateCodeれたcfloopの2番目のインスタンスに注目してください。

<cfoutput>
    <ul>
    <cfloop query="geo" group="stateCode">
        <!--- Scope the column names with the query name. --->
        <li>#geo.stateCode#
            <ul>
                <cfloop>
                    <li>#geo.city# | #geo.zipCode#</li>
                </cfloop>
            </ul>
        </li>
    </cfloop>
    </ul>
</cfoutput>

グループ化されたcfloopタグからHTML(抽出)を生成します。

<ul>
    <li>AK
        <ul>
            <li>KONGIGANAK | 99545</li>
            <li>ADAK | 99546</li>
            <li>ATKA | 99547</li>
            <!-- etc. -->
        </ul>
    </li>
    <li>AL
        <ul>
            <li>ALEX CITY | 35010</li>
            <li>ALEXANDER CITY | 35010</li>
            <li>ALEX CITY | 35011</li>
            <!-- etc. -->
        </ul>
    </li>
    <!-- etc. -->
</ul>

最後にcityごとにすべてのzipCodeエントリを表示するためにstateCode 、次にcity stateCodeの出力をグループ化しましょう。 2番目のcfloopcity別にグループ化され、3番目のcfloopが存在し、 zipCodeデータを出力することに注意してください。

<cfoutput>
    <ul>
    <cfloop query="geo" group="stateCode">
        <li>#geo.stateCode#
            <ul>
            <cfloop group="city">
                <li>#geo.city#
                    <ul>
                        <cfloop>
                            <li>#geo.zipCode#</li>
                        </cfloop>
                    </ul>
                </li>
            </cfloop>
            </ul>
        </li>
    </cfloop>
    </ul>
</cfoutput>

グループ化された2つのcfloopタグからHTML(抽出)を生成します。

<ul>
    <li>AK
        <ul>
            <li>ADAK
                <ul>
                    <li>99546</li>
                    <li>99571</li>
                </ul>
            </li>
            <li>AKHIOK
                <ul>
                    <li>99615</li>
                </ul>
            </li>
            <!--- etc. --->
            <li>BARROW
                <ul>
                    <li>99723</li>
                    <li>99759</li>
                    <li>99789</li>
                    <li>99791</li>
                </ul>
            </li>
            <!--- etc. --->
        </ul>
    </li>
    <!--- stateCodes etc. --->
</ul>

CFScript

ColdFusion 6(MX)現在のところ

<cfscript>
    for (x = 1; x LTE geo.recordcount; x = x + 1) {
        writeOutput( '<li>' & geo.city[x] & ' | ' & 
            geo.stateCode[x] & ' | ' & geo.zipCode[x] & '</li>');
    }
</cfscript>

ColdFusion 8現在のところ

<cfscript>
    for (x = 1; x <= geo.recordcount; x++) {
        writeOutput( '<li>' & geo.city[x] & ' | ' & 
            geo.stateCode[x] & ' | ' & geo.zipCode[x] & '</li>');
    }
</cfscript>

ColdFusion 10現在のところ

FOR IN構文では、 xは行インデックスではなくクエリ行オブジェクトです。

<cfscript>
    for (x in geo) {
        writeOutput( '<li>' & x.city & ' | ' & 
            x.stateCode & ' | ' & x.zipCode & '</li>');
    }
</cfscript>

現在でもColdFusion 11

ColdFusion 11では、ほとんどのタグをcfscriptとして書き込むことができます。

<cfscript>
    cfloop(query: geo, startrow: 1, endrow: 2) {
        writeOutput( '<li>' & geo.city & ' | ' & 
            geo.stateCode & ' | ' & geo.zipCode & '</li>');
    }
</cfscript>

group

<cfscript>
    cfloop(query: geo, group: 'city') {
        writeOutput( '<li>' & geo.city & '<ul>');
        cfloop() { // no arguments, just as in the tag syntax.
            writeOutput('<li>'  & geo.zipCode & '</li>');
        }
        writeOutput('</ul></li>');
    }
</cfscript>

リスト

このリストを考えてみましょう:

<cfset foo = "one,two,three,four" />

タグ構文

パラメーター

属性必須デフォルト説明
リスト真実リストオブジェクト。変数は評価されなければならない(##でラップされる)
索引真実リストの現在の要素。
<cfoutput>
    <cfloop list="#foo#" index="x">
        <li>#x#</li>
    </cfloop>
</cfoutput>

生成されたHTML

これは、HTMLの各行の間に改行もあります。

<li>one</li>
<li>two</li>
<li>three</li>
<li>four</li>

CFScript

ColdFusion 8以前

<cfscript>
    for (x = 1; x LTE listLen(foo); x = x + 1) {
        writeOutput("<li>" & listGetAt(foo, x) & "</li>");
    }
</cfscript>

現在のColdFusion 8から

<cfscript>
    for (x = 1; x <= listLen(foo); x++) {
        writeOutput("<li>" & listGetAt(foo, x) & "</li>");
    }
</cfscript>

現在のColdFusion 9から

<cfscript>
    for (x in foo) {
        writeOutput("<li>" & x & "</li>");
    }
</cfscript>

現在のColdFusion 11から

cfscript関数cflooplistサポートしていません。

生成されたHTML

cfscriptの出力はすべて1行にあることに注意してください。

<li>one</li><li>two</li><li>three</li><li>four</li>

アレイ

ColdFusion 8では、 cfloop arrayオブジェクトを直接使用する機能が追加されました。

この配列を考えてみましょう。

<cfset aFoo = [
    "one"
    , "two"
    , "three"
    , "four"
] />

タグ構文

現在のColdFusion 8から

属性indexを単独で使用する。

パラメーター

属性必須デフォルト説明
アレイ真実配列オブジェクト。変数は評価されなければならない(##でラップされる)
索引真実配列の現在の要素。
<cfoutput>
    <cfloop array="#aFoo#" index="x">
        <li>#x#</li>
    </cfloop>
</cfoutput>

生成されたHTML

これは、HTMLの各行の間に改行もあります。

<li>one</li>
<li>two</li>
<li>three</li>
<li>four</li>

現在のColdFusion 2016

属性itemは、ColdFusion 2016以降のcfloopの動作を変更します。

index代わりにまたはindexに加えて属性itemを使用する。

パラメーター

属性必須デフォルト説明
アレイ真実配列オブジェクト。変数は評価されなければならない(##でラップされる)
項目真実配列の現在の要素。
索引配列の現在のインデックス。
<cfoutput>
    <cfloop array="#aFoo#" item="x" index="y">
        <li>#x# | #y#</li>
    </cfloop>
</cfoutput>

生成されたHTML

これは、HTMLの各行の間に改行もあります。

<li>one | 1</li>
<li>two | 2</li>
<li>three | 3</li>
<li>four | 4</li>

CFScript

ColdFusion 8以前

<cfscript>
for (i = 1; x LTE arrayLen(aFoo); i = i + 1) {
    writeOutput("<li>" & aFoo[i] & "</li>");
}
</cfscript>

現在のColdFusion 8から

<cfscript>
for (i = 1; i <= arrayLen(aFoo); i = i++) {
    writeOutput("<li>" & aFoo[i] & "</li>");
}
</cfscript>

現在のColdFusion 9から

FOR IN構文では、xは現在の配列要素であり、配列の添字ではありません。

<cfscript>
for (x in aFoo) {
    writeOutput("<li>" & x & "</li>");
}
</cfscript>

現在のColdFusion 11から

cfscript関数cflooparrayサポートしていません。

生成されたHTML

cfscript出力はすべて1行にあることに注意してください。

<li>one</li><li>two</li><li>three</li><li>four</li>

ファイル

<cfloop list="#myFile#" index="FileItem" delimiters="#chr(10)##chr(13)#">
  <cfoutput>
   #FileItem#<br />
 </cfoutput>
</cfloop>

構造

この構造を考えてみましょう。

<cfset stFoo = {
    a = "one"
    , b = "two"
    , c = "three"
    , d = "foue"
} />

タグ構文

パラメーター

indexなく属性item使用に注目してください。

属性必須タイプデフォルト説明
コレクション真実構造 structオブジェクト。変数は評価されなければなりません(##でラップされます)。
項目真実文字列現在の構造key

構造体関数の使用

<cfoutput>
    <cfloop collection="#stFoo#" item="x">
        <li>#structFind(stFoo, x)#</li>
    </cfloop>
</cfoutput>

暗黙の構造構文

<cfoutput>
    <cfloop collection="#stFoo#" item="x">
        <li>#stFoo[x]#</li>
    </cfloop>
</cfoutput>

生成されたHTML

これは、HTMLの各行の間に改行もあります。

<li>one</li>
<li>two</li>
<li>three</li>
<li>four</li>

CFScript

FOR IN構文では、 xは構造体オブジェクトのkeyです。

構造体のキーを出力する

<cfscript>
    for (x in stFoo) {
        writeOutput("<li>" & x & "</li>");
    }
</cfscript>

生成されたHTML

<li>A</li><li>B</li><li>C</li><li>D</li>

構造体のキーの値を出力する

構造体関数の使用

<cfscript>
    for (x in stFoo) {
        writeOutput("<li>" & structFind(stFoo, x) & "</li>");
    }
</cfscript>

暗黙の構造構文

<cfscript>
    for (x in stFoo) {
        writeOutput("<li>" & stFoo[x] & "</li>");
    }
</cfscript>

現在のColdFusion 11から

cfscript関数cfloopcollectionサポートしていません。

生成されたHTML

cfscriptの出力はすべて1行にあることに注意してください。

<li>one</li><li>two</li><li>three</li><li>four</li>

インデックスループ

from属性とto属性を使用して、反復回数を指定します。 (オプションの) step属性を使用すると、増分の大きさを判断できます。

<cfloop from="1" to="10" index="i" step="2">
    <cfoutput>
        #i#<br />
    </cfoutput>
</cfloop>

条件ループ

condition属性を使用して、使用するconditionを指定します。

<cfset myVar=false>
<cfloop condition="myVar eq false">
    <cfoutput>
    myVar = <b>#myVar#</b>  (still in loop)<br />
 </cfoutput>
    <cfif RandRange(1,10) eq 10>
        <cfset myVar="true">
    </cfif>
</cfloop>
<cfoutput>
    myVar = <b>#myVar#</b> (loop has finished)
</cfoutput>

クエリループ

ColdFusionクエリの結果をループすることができます。

<cfquery name="getMovies" datasource="Entertainment">
    select top 4 movieName
    from Movies
</cfquery>
<cfloop query="getMovies">
    #movieName#
</cfloop>

リストループ

(オプションの) delimiters属性を使用して、リスト内のセパレータとして使用される文字を指定することができます。

<cfloop list="ColdFusion,HTML;XML" index="ListItem" delimiters=",;">
    <cfoutput>
        #ListItem#<br />
    </cfoutput>
</cfloop>

ファイルループ

ファイルをループすることができます。

<cfloop file="#myFile#" index="line">
    <cfoutput>
        #line#<br />
    </cfoutput>
</cfloop>

COMコレクション/構造ループ

構造またはCOMコレクションをループすることができます。

<cfset myBooks = StructNew()>
<cfset myVariable = StructInsert(myBooks,"ColdFusion","ColdFusion MX Bible")>
<cfset myVariable = StructInsert(myBooks,"HTML","HTML Visual QuickStart")>
<cfset myVariable = StructInsert(myBooks,"XML","Inside XML")>
<cfloop collection="#myBooks#" item="subject">
    <cfoutput>
        <b>#subject#:</b> #StructFind(myBooks,subject)#<br />
    </cfoutput>
</cfloop>


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow