ArrayDeleteAt Gotcha

Be careful when using ArrayDeleteAt. When an element is deleted, ColdFusion recalculates index positions. For example, in an array that contains the months of the year, deleting the element at position 5 removes the entry for May. After this, to delete the entry for June, you would delete the element at position 5 (not 6). Here is an example to demonstrate this behavior:

<cfset myArray = ArrayNew(1)>
<cfset myArray[1] = "Jan">
<cfset myArray[2] = "Feb">
<cfset myArray[3] = "Mar">
<cfset myArray[4] = "Apr">
<cfset myArray[5] = "May">
<cfset myArray[6] = "Jun">
<cfloop from="1" to="#ArrayLen(myArray)#" index="i">
    <cfset arrayDeleteAt(myArray,5)>
</cfloop>

If you execute the above, you get:

Cannot insert/delete at position 5.
The array passed has 4 indexes. Valid positions are from 1 to 4.


Possibly related:


Tagged | Post a Comment