创建数组

使用 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#">

结果:

StackOverflow 文档

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#">

结果:

StackOverflow 文档

每个元素都包含另一个 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#">

StackOverflow 文档

替代明确声明

你也可以将 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#">

结果:

StackOverflow 文档