User Guide Cancel

ArrayNew

 

Description

Creates an array of 1-3 dimensions. Index array elements with square brackets: [ ]. ColdFusion arrays expand dynamically as data is added.

Returns

An array

Category

Array functions

History

ColdFusion (2018 release): Introduced named parameters.

Introduced in ColdFusion MX 6

Function syntax

ArrayNew(dimensions,[isSynchronized=true])

Parameters  

Parameter

Description

dimensions

Number of dimensions in the array: 1, 2, or 3

isSynchronized

When false, creates an unsynchronized array. This parameter is new in the 2016 release of ColdFusion. When this parameter is true or no parameter is specified, the function returns a synchronized array.

The default value is true.

In ColdFusion 11, and previous versions, arrays were always thread-safe.

But thread safety comes at a cost of synchronizing the array object. In a synchronized array, two or more threads cannot access the array at the same time. The second thread has to wait until the first thread completes its job, resulting in significant performance deterioration.

In ColdFusion (2016 release), you can use an unsynchronized array and let multiple threads access the same array object simultaneously.

You can use unsynchronized arrays in situations where you need not worry about multiple threads accessing the same array. In other words, if you are defining an unsynchronized array in a thread safe object, like a UDF or a CF-Closure,  you can use an unsynchronized array.

While a normal array is slower but thread safe, an unsynchronized array is faster by more than 90%.

Example

<h3>ArrayNew Example</h3>
        <!--- Creates an unsynchronized array. --->
        <cfset MyNewArray = ArrayNew(1,false)>
        <!--- ArrayToList does not function properly if the Array is not initialized with
        ArraySet --->
        <cfset temp = ArraySet(MyNewArray, 1,6, "")>
       
        <!--- Set some elements. --->
        <cfset MyNewArray[1] = "Sample Value">
        <cfset MyNewArray[3] = "43">
        <cfset MyNewArray[6] = "Another Value">
       
        <!--- Is it an array? --->
        <cfoutput>
        <p>Is this an array? #IsArray(MyNewArray)#</p>
        <p>It has #ArrayLen(MyNewArray)# elements.</p>
        <p>Contents: #ArrayToList(MyNewArray)#</p>
        <!--- The array has expanded dynamically to six elements with the use of ArraySet,
        even though we only set three values. --->
        </cfoutput>

Get help faster and easier

New user?