创建数组
使用 ArrayNew()
显式创建数组
使用 ArrayNew 函数声明一个数组。指定维数作为参数。
- ArrayNew( dimension )创建一个 1-3 维的数组。
- ColdFusion 数组在添加数据时动态扩展。
ArrayNew()
返回一个数组。
历史
在 ColdFusion MX 6 中引入
声明
CFML
<!--- One Dimension Array--->
<cfset oneDimensionArray = ArrayNew(1)>
CFScript 请注意,在函数内部,你应该使用 var
作用域。早期版本的 CF 要求 var 范围是函数中的第一件事; 更高版本允许它在函数中的任何位置。
<cfscript>
oneDimensionArray = ArrayNew(1);
public void function myFunc() {
var oneDimensionArray = ArrayNew(1);
}
</cfscript>
创建数组后,使用元素索引添加元素。Coldfusion 数组索引从 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)
向元素添加元素。
<cfscript>
ArrayAppend(oneDimensionArray, 1);
ArrayAppend(oneDimensionArray, 'one');
ArrayAppend(oneDimensionArray, '1');
</cfscript>
使用 <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#">
结果:
每个元素都包含另一个 Array,它将存储值。
隐式创建一维数组
隐式创建数组时,括号([])用逗号分隔符包围数组内容。
<cfset oneDimensionArrayImplicit = [ 1 ,'one','1' ]>
此语句等同于用于创建上述 oneDimensionArray 的四个语句。使用时结果相同:
<cfdump var="#oneDimensionArrayImplicit#">
隐式创建二维数组
<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 维数组声明为
<cfset oneDimensionArray = []>
<cfscript>
oneDimensionArray = [];
</cfscript>
该声明与使用 ArrayNew(1)
的声明相同。
但是如果你尝试将 2 维数组声明为
<cfset twoDimensionArray =[][]> //Invalid CFML construct
处理此请求时将发生错误。
以下声明将处理请求:
<cfset twoDimensionArray =[]>
但变量 twoDimensionArray
实际上不是 Array(或 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#">
结果: