説明

リストに対するループでは、次のエンティティ内に含まれている要素が順次使用されます。

  • 変数
  • 式から返される値
  • 配列
  • ファイルファイルに対するループでは、ファイル全体がメモリに展開されません。

シンタックス

<cfloop 
index = "index name"
item = "item name"
array = "array" 
characters = "number of characters" 
delimiters = "item delimiter" 
file = "absolute path and filename"
charset = "a charset to use when reading the file" 
list = "list items" 
... 
</cfloop>

関連項目

cfabortcfbreakcfcontinuecfexecutecfexitcfifcflocationcfswitchcfthrowcftry、『ColdFusion アプリケーションの開発』の cfloop および cfbreak

履歴

ColdFusion 8:characters、file および array 属性が追加されました。

cfloop - 配列

属性

必須/オプション

説明

array

必須

配列オブジェクト。

index

オプション。以前のバージョンの ColdFusion では、この属性は必須でした。ColdFusion(2016 リリース)では、この属性はオプションです。item か index のどちらかが必要です。 

配列の現在のインデックス。

item

オプション

配列の現在の要素。ColdFusion(2016 リリース)では、item または index のどちらかを使用するか、その両方の属性を使用する必要があります。

次のコードサンプルでは、item index も使用していないので、例外が発生します。

<cfset myArray = ["John", "Paul", "George", "Ringo"] >
<cfloop array="#myArray#">
   <cfoutput>#x# <br/> </cfoutput>
</cfloop>

次に、属性 index の使用例を示します。

<cfset myArray = ["John", "Paul", "George", "Ringo"] >
<cfloop array="#myArray#" index="idx">
   <cfoutput>#idx# <br/> </cfoutput>
</cfloop>

出力

John Paul George Ringo

次に、属性 item の使用例を示します。

<cfset myArray = ["John", "Paul", "George", "Ringo"] >
<cfloop array="#myArray#" item="itm">
   <cfoutput>#itm# <br/> </cfoutput>
</cfloop>

出力

John Paul George Ringo

次に、item および index 属性の使用例を示します。

<cfset myArray = ["John", "Paul", "George", "Ringo"] >
<cfloop array="#myArray#" item="Beatles" index="name">
   <cfoutput>#name# : #Beatles# <br/> </cfoutput>
</cfloop>

出力

1 : John 2 : Paul 3 : George 4 : Ringo

多次元配列のループ

多次元配列は、単一の値の配列ではなく配列の配列です。

2 次元配列から要素を読み取るには、まず行のインデックスを特定してから、その列のインデックスを特定する必要があります。例えば、曲「Surfer Girl」は行 3、列 1 にあるため、aBeachBoysAlbums[3][1] と特定されます。

2 次元配列をループするには、ループを別のループの内側にネストする必要があります。

<cfset aBeachBoysAlbums = ArrayNew(2)>

<!---Build first album array, Surfin' Safari--->
<cfset aBeachBoysAlbums[1][1] = "Surfin' Safari">
<cfset aBeachBoysAlbums[1][2] = "County Fair">
<cfset aBeachBoysAlbums[1][3] = "Ten Little Indians">

<!---Build second album array, Surfin' USA--->
<cfset aBeachBoysAlbums[2][1] = "Surfin' USA">
<cfset aBeachBoysAlbums[2][2] = "Farmer's Daughter">
<cfset aBeachBoysAlbums[2][3] = "Miserlou">

<!---Build third album array, Surfer Girl--->
<cfset aBeachBoysAlbums[3][1] = "Surfer Girl">
<cfset aBeachBoysAlbums[3][2] = "Catch a Wave">
<cfset aBeachBoysAlbums[3][3] = "The Surfer Moon">

<!---<cfdump var="#aBeachBoysAlbums#" >--->


<!--- loop --->

<cfloop from="1" to="#ArrayLen(aBeachBoysAlbums)#" index="i">
	<cfoutput>
		<cfloop from="1" to="#ArrayLen(aBeachBoysAlbums[i])#" index="j">
			Album: #i# Song #j#: #aBeachBoysAlbums[i][j]#</br>
		</cfloop>
	</cfoutput>
</cfloop>

出力

Album: 1 Song 1: Surfin' Safari
Album: 1 Song 2: County Fair
Album: 1 Song 3: Ten Little Indians
Album: 2 Song 1: Surfin' USA
Album: 2 Song 2: Farmer's Daughter
Album: 2 Song 3: Miserlou
Album: 3 Song 1: Surfer Girl
Album: 3 Song 2: Catch a Wave
Album: 3 Song 3: The Surfer Moon

あるいは、構造体の配列を使用し、配列をループしてキーと値のペアを抽出することもできます。

次に例を挙げます。

<cfscript>
data = [
    {code:"USA", count:324459463},
    {code:"UK", count:66181585},
    {code:"CAN", count:36624199},
    {code:"FRA", count:64979548},
    {code:"NED", count:17035938},
    {code:"GER", count:82114224}
];
</cfscript>

<cfloop array="#data#" index="i">
   <cfoutput>
   	The population of #i.code#: #i.count#<br>
   </cfoutput>
</cfloop>

出力

The population of USA: 324459463
The population of UK: 66181585
The population of CAN: 36624199
The population of FRA: 64979548
The population of NED: 17035938
The population of GER: 82114224

cfloop - リスト

属性

必須/オプション

説明

list

必須

要素のリスト。

index

オプション

リストの現在のインデックス。

item

オプション

リストの現在の要素。ColdFusion(2016 リリース)では、item または index のどちらかを使用するか、その両方の属性を使用する必要があります。

delimiters

オプション

リスト項目を区切る文字。

次のコードサンプルでは、item も index も使用していないので、例外が発生します。

<cfset myList="John,Paul|George|Ringo"/>
<cfloop list="#myList#" delimiters=",|">
	<cfoutput>
		#name#
	</cfoutput>
</cfloop>

次に、属性 index の使用例を示します。このサンプルでは、delimiters 属性を使用していません。

<cfset myList="John,Paul,George,Ringo"/>
<!---Loop through the list with attribute index --->
<cfloop list="#myList#" index="name">
	<cfoutput>
		#name#
	</cfoutput>
</cfloop>

出力

John Paul George Ringo

次に、属性 item の使用例を示します。このサンプルでは、delimiters 属性を使用していません。

<cfset myList="John,Paul,George,Ringo"/>
<!---Loop through the list with attribute item --->
<cfloop list="#myList#" item="Beatles">
	<cfoutput>
		#Beatles#
	</cfoutput>
</cfloop>

出力

John Paul George Ringo

次のように、item index の両方を使用することもできます。

<cfset beatles="John,Paul,George,Ringo"/>
<!---Loop through the list with attributes item and index --->
<cfloop list="#beatles#" item="name" index="i">
	<cfoutput>
		#i#:#name#
	</cfoutput>
</cfloop>

cfloop 内での delimiters の使用 - リスト

delimiters は、リスト項目を区切る文字です。次に例を挙げます。

  • Item1, item2, item3, item4(カンマ区切りリスト)
  • Item1, item2 | item3 | item4(カンマおよびパイプ区切りリスト)

サンプルコードを次に示します。

<cfset myList="John,Paul|George|Ringo"/>
<!---Loop through the list with attributes index and delimiters --->
<cfloop list="#myList#" index="name" delimiters="|">
	<cfoutput>
		#name#
	</cfoutput>
</cfloop>

出力

John、Paul George Ringo

<cfset myList="John,Paul|George|Ringo"/>
<!---Loop through the list with attributes index and delimiters --->
<cfloop list="#myList#" index="name" delimiters=",|">
	<cfoutput>
		#name#
	</cfoutput>
</cfloop>

出力

John Paul George Ringo

cfloop - ファイル

属性

必須/オプション

説明

file

必須

file 属性は、読み込むテキストファイルの絶対パスとファイル名を示します。ファイルの絶対パスとファイル名は 1 行で指定します。サイズの大きいテキストファイルを読み込むときは、ファイルの現在行を格納するインデックス変数の値を再利用できます。ループが完了すると、ファイルは閉じられます。

item

オプション

値は line または chars です(ColdFusion 2016 の場合)。ファイルの読み込み方法を示します。

index

オプション

ColdFusion(2016 リリース)では、item または index のどちらかを使用するか、その両方の属性を使用する必要があります。

character

オプション

この属性は、ループを繰り返すたびに file 属性で指定されたファイルから読み込む文字数を示します。characters 属性の値がファイル内の文字数よりも大きい場合は、ファイル内の文字数が使用されます。

charset

オプション

ファイルを読み込むときに使用する文字セット。

次のコードサンプルでは、テキストファイル myfile.txt を開き、各文字を読み込んで、ループを繰り返すたびに最初の 20 文字(スペースを含む)を表示します。

<cfset myFile="c:\out\myfile.txt"/>
<cfloop file="#myFile#" index="i" item="chars" characters="20">
    <cfoutput>
        #i#:#chars#<br />
    </cfoutput>
</cfloop>
cfloop - ファイル
cfloop - ファイル

次のサンプルでは、index および item 属性を使用してファイルの各行を読み込みます。

<cfset myFile="c:\out\myfile.txt"/>
<cfloop file="#myFile#" index="i" item="line">
    <cfoutput>
        #i#:#line#<br />
    </cfoutput>
</cfloop>
インデックスとアイテムを使用した cfloop - ファイル
インデックスとアイテムを使用した cfloop - ファイル

cfloop - 構造体

構造体に対してループをおこなうと、構造体内の各項目が、item 属性に指定された変数名によって参照されます。すべての項目がアクセスされるまで、ループが実行されます。

属性

必須/オプション

説明

collection

必須

構造体オブジェクト。

item

必須

キーと値のペアに対する繰り返し処理で使用する構造体のキー。collection 属性は item 属性とともに使用します。

例えば、次のサンプルでは、item キーは、構造体内の各項目に対して繰り返され、キーと値のペアを表示します。

<cfscript>
	Team = {"Marketing" = "John", "Sales" : {"Executive" : "Tom", "Assistant" = "Mike"},"IT":{"Developers":{"Dev1":"Ashley","Dev2"="Jason"}}};
</cfscript>
<cfloop collection="#Team#" item="key" >
        <cfoutput>#Key#:</cfoutput>
		<cfdump var="#Team[key]#">
        <br/>
</cfloop>
cfloop - 構造体
cfloop - 構造体

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー