coldfusion
ColdFusion配列
サーチ…
構文
- ArrayNew(dimension、isSynchronized)
パラメーター
| 名 | 説明 |
|---|---|
| 寸法 | 新しい配列の次元数:1,2、または3 |
| isSynchronized | falseの場合、非同期配列を作成します。trueの場合、関数は同期配列を返します。 |
備考
同期配列では、2つ以上のスレッドがアレイに同時にアクセスすることはできません。他のスレッドは、アクティブなスレッドがジョブを完了するまで待たなければならず、その結果、パフォーマンスが大幅に向上します。
ColdFusionのリリースでは、非同期配列を使用して、複数のスレッドが同じ配列オブジェクトに同時にアクセスできるようにすることができます。
配列の作成
ArrayNew()を使用して明示的に配列を作成する
ArrayNew関数で配列を宣言します。ディメンションの数を引数として指定します。
- ArrayNew( dimension )は、1〜3次元の配列を作成します。
- ColdFusion配列は、データが追加されると動的に展開されます。
- ArrayNew()は配列を返します。
歴史
ColdFusion MX 6で導入されました
宣言
CFML
<!--- One Dimension Array--->
<cfset oneDimensionArray = ArrayNew(1)>
関数内では、 varスコープを使用する必要があることに注意してください。以前のバージョンのCFでは、関数の中で最初にvarスコープが必要でした。後のバージョンでは、関数内のどこでも可能です。
<cfscript>
oneDimensionArray = ArrayNew(1);
public void function myFunc() {
var oneDimensionArray = ArrayNew(1);
}
</cfscript>
配列を作成した後、要素インデックスを使用して要素を追加します。 Coldfusion Arrayインデックスは1から始まります。
CFML
<cfset oneDimensionArray[1] = 1>
<cfset oneDimensionArray[2] = 'one'>
<cfset oneDimensionArray[3] = '1'>
CFScript
<cfscript>
oneDimensionArray[1] = 1;
oneDimensionArray[2] = 'one';
oneDimensionArray[3] = '1';
</cfscript>
ArrayAppend()を使用する
関数ArrayAppend(array, value)を使用して配列に要素を追加できArrayAppend(array, value) 。
<cfscript>
ArrayAppend(oneDimensionArray, 1);
ArrayAppend(oneDimensionArray, 'one');
ArrayAppend(oneDimensionArray, '1');
</cfscript>
<cfdump>を使用して配列の内容を出力し<cfdump> 。
<cfdump var="#oneDimensionArray#">
結果:
CFML
<!--- Two Dimension Array--->
<cfset twoDimensionArray = ArrayNew(2)>
<cfset twoDimensionArray[1][1] = 1>
<cfset twoDimensionArray[1][2] = 2>
<cfset twoDimensionArray[2][1] = 3>
<cfset twoDimensionArray[2][2] = 4>
CFScript
<cfscript>
twoDimensionArray = ArrayNew(2);
twoDimensionArray[1][1] = 1;
twoDimensionArray[1][2] = 2;
twoDimensionArray[2][1] = 3;
twoDimensionArray[2][2] = 4;
</cfscript>
<cfdump>を使用して配列の内容を出力する
<cfdump var="#twoDimensionArray#">
結果:
各要素には、値を格納する別の配列が含まれています。
暗黙的に1次元配列を作成する
暗黙的に配列を作成するときは、大括弧([])で配列の内容をカンマ区切りで囲みます。
<cfset oneDimensionArrayImplicit = [ 1 ,'one','1' ]>
このステートメントは、上記のoneDimensionArrayを作成するために使用された4つのステートメントと同等です。結果は次の場合と同じです。
<cfdump var="#oneDimensionArrayImplicit#">
暗黙的に2次元配列を作成する
<cfset twoDimensionArrayImplicit = [[ 1 , 2 ],[ 3 , 4 ],[ 5 , 6 ]]>
または:
<cfset firstElement = ["1", "2"]>
<cfset secondElement= ["3", "4"]>
<cfset thirdElement = ["5", "6"]>
<cfset twoDimensionArrayImplicit = [firstElement , secondElement, thirdElement]>
コンテンツを使用して出力する
<cfdump var="#twoDimensionArrayImplicit#">
代替明示的宣言
1 Dimension Arrayを次のように宣言することもできます。
<cfset oneDimensionArray = []>
<cfscript>
oneDimensionArray = [];
</cfscript>
この宣言は、 ArrayNew(1)を使用した宣言と同じです。
しかし、2 Dimension Arrayを次のように宣言しようとすると
<cfset twoDimensionArray =[][]> //Invalid CFML construct
この要求の処理中にエラーが発生します。
次のステートメントはリクエストを処理します:
<cfset twoDimensionArray =[]>
変数twoDimensionArrayは実際には配列(または2次元配列)内の配列ではありません。実際にはArray内に構造体が含まれています。
<cfset twoDimensionArray =[]>
<cfset twoDimensionArray[1][1] = 1>
<cfset twoDimensionArray[1][2] = 2>
<cfset twoDimensionArray[2][1] = 3>
<cfset twoDimensionArray[2][2] = 4>
<cfdump var="#twoDimensionArray#">
結果:
CFScriptの配列
<cfscript>
oneDimensionArray = ArrayNew(1);
oneDimensionArray[1] = 1;
oneDimensionArray[2] = 'one';
oneDimensionArray[3] = '1';
</cfscript>
<cfif IsDefined("oneDimensionArray")>
<cfdump var="#oneDimensionArray#">
</cfif>
結果:
また、1つの次元配列を次のように宣言できます。
oneDimensionArray = [];
あるいは、CFは<cfscript>使用できる<cfdump>タグと同等の機能として、 CF9からWriteDump()を導入しWriteDump() 。
<cfscript>
WriteDump(oneDimensionArray);
</cfscript>
同様に、2次元配列の場合:
<cfscript>
twoDimensionArray = ArrayNew(2);
twoDimensionArray[1][1] = 1;
twoDimensionArray[1][2] = 2;
twoDimensionArray[2][1] = 3;
twoDimensionArray[2][2] = 4;
</cfscript>
<cfdump var="#twoDimensionArray#">
結果:
一般情報
まず、他のプログラミング言語と比較して、Coldfusionでの配列の動作に関する一般的な情報
- 配列は数値インデックスのみを持つことができます(文字列インデックスに
structsを代わりに使用したい場合) - 配列はインデックス[1]から始まります。
- 配列は1つ以上の次元を持つことができます



![[]明示的宣言を使用する2つの次元配列](http://i.stack.imgur.com/6nHIJ.png)

