CFLOOP: COM コレクションまたは構造体に対するループ  
説明

cfloop タグの collection 属性では、COM/DCOM コレクションオブジェクト内のすべてのオブジェクトや、構造体内のすべての要素に対してループを行います。

  • COM/DCOM コレクションオブジェクトは、グループとして参照される一連の類似項目です。たとえば、アプリケーション内で開かれているドキュメントのグループはコレクションとなります。
  • 構造体は、関連する一連の項目を格納するもので、連想配列として使用できます。ループは、構造体を連想配列として使用する場合に特に有効です。

ループ内では、各項目が、item 属性に指定した変数名によって参照されます。すべての項目にアクセスが行われるまで、ループが実行されます。

collection 属性は item 属性と共に使用します。次の例では、item 属性に file2 という変数を指定して、cfloop の各サイクルでコレクション内の各項目を参照できるようにしています。cfoutput セクションでは、file2 項目の name プロパティを参照し、表示しています。

詳細については、『ColdFusion MX 開発ガイド』の第38章の「CFML アプリケーションでの COM および CORBA オブジェクトの統合」 を参照してください。

 

この例では、COM オブジェクトを使用してファイルのリストを出力します。この例では、FFunc は file2 オブジェクトのコレクションです。

<cfobject
   class = FileFunctions.files
   name = FFunc
   action = Create> 
<cfset FFunc.Path = "c:"> 
<cfset FFunc.Mask = "*.*" > 
<cfset FFunc.attributes = 16 > 
<cfset x = FFunc.GetFileList()> 
<cfloop collection = #FFUNC# item = "file2"> 
   <cfoutput>      #file2.name# <br>    </cfoutput> 
</cfloop>
<!---連想配列として使用する構造体全体をループ --->
...<!--- 構造体を作成し、その内容全体をループします。 --->
<cfset Departments = StructNew()>
<cfset val = StructInsert(Departments, "John ", "Sales ")>
<cfset val = StructInsert(Departments, "Tom ", "Finance ")>
<cfset val = StructInsert(Departments, "Mike ", "Education ")>
<!--- テーブルを構築して、内容を表示 --->
<cfoutput>
<table cellpadding = "2 " cellspacing = "2 ">
   <tr>
      <td><b>従業員</b></td>
      <td><b>部門</b></td>
   </tr>
<!--- item 属性を使用して、ループの実行時にキーの値を保持するための person という変数を作成します。 ---
>
<cfloop collection = #Departments# item = "person ">
   <tr>
      <td>#person#</td>
      <td>#StructFind(Departments, person)#</td>
   </tr>
</cfloop>
</table>
</cfoutput>