CFLOOP: インデックスループ  
説明

インデックスループは、数値で指定された回数だけ繰り返されます。インデックスループは FOR ループとも呼ばれます。

 
シンタックス
<cfloop
   index = "parameter_name"
   from = "beginning_value"
   to = "ending_value"
   step = "increment">
   ... HTML または CFML コード ...
</cfloop>
 
関連項目

cfabort、cfbreak、cfdirectory、cfexecute、cfexit、cfif、cflocation、cfrethrow、cfswitch、cfthrow、cftry、『ColdFusion MX 開発ガイド』の第2章の「CFML の要素」 の「cfloop と cfbreak」

 
使用方法

インデックスループの from 属性と to 属性に整数値以外の値を指定すると、予期せぬ結果になる可能性があります。たとえば、インデックスループを通じて 1 ~ 2 の間で 0.1 ずつ加算していく場合、ColdFusion は "1、1.1、1.2、...、1.9" まで出力しますが、"2" は出力しません。これは、浮動小数点数の内部表現に関するプログラミング言語の問題です。

メモ: to 値は、cfloop タグが検出されたときに一度だけ評価されます。ループブロック内、またはこの値を評価する式内でこの値を変更しても、ループが実行される回数に影響はありません。
 

次の例では、ループが 5 回行われ、そのたびに index 値が表示されます。

<cfloop index = "LoopCount" from = "1" to = "5">
   ループインデックスは <cfoutput>#LoopCount#</cfoutput> です。<br>
</cfloop>

このループの出力は次のとおりです。

ループインデックスは 1 です。
ループインデックスは 2 です。
ループインデックスは 3 です。
ループインデックスは 4 です。
ループインデックスは 5 です。

次の例では、ループが 4 回行われ、そのたびに index 値が表示されます。j の値はループが繰り返されるたびに減算されます。to の値はループに入る前に j からコピーされたものなので、この減算の影響を受けません。

<cfset j = 4>
<cfloop index = "LoopCount" from = "1" to = #j#>
   <cfoutput>ループインデックスは #LoopCount#</cfoutput>.<br>です。
   <cfset j = j - 1>
</cfloop>

このループの出力は次のとおりです。

ループインデックスは 1 です。
ループインデックスは 2 です。
ループインデックスは 3 です。
ループインデックスは 4 です。

前述のように、j の値はループが繰り返されるたびに減算されますが、to 値は j がループに入る前に作成されたコピーであるため影響はありません。

この例では、step にはデフォルト値 1 が使用されています。次のコードでは、インデックス値が減算されます。

<cfloop index = "LoopCount"
   from = "5"
   to = "1"
   step = "-1">
ループインデックスは <cfoutput>#LoopCount#</cfoutput>です。<br>
</cfloop>

このループの出力は次のとおりです。

ループインデックスは 5 です。
ループインデックスは 4 です。
ループインデックスは 3 です。
ループインデックスは 2 です。
ループインデックスは 1 です。
INDEX  
  必須
 

インデックスの値です。この値は最初 from 属性の値に設定され、step 属性の値ずつ、to 属性の値まで加算または減算されます。

FROM  
  必須
 

インデックスの開始値です。

TO  
  必須
 

インデックスの終了値です。

STEP  
  オプション
 
Default value: "1"

インデックス値を加算または減算する数値です。