# Array UDF - Script Breaking Changes

The Array UDF has been almost completely rewritten to support 2D arrays, to improve the speed of multiple insertion and deletions and correct bugs.
This means that scripts written for AutoIt up to version 3.3.12.0 might not run correctly with later versions and may need to be modified.
The following table lists the differences between the old and the new version.
Changed functions/parameters

UDF Function/Parameter | Comments
--- | ---
All changed functions | Values returned in @error on function error may well have changed - details on specific Help file pages.
_ArrayAdd | Now supports 2D arrays and can add multiple lines in one call.
$vValue | Altered: Value(s) to add - can be a single item, a delimited string or an array.
$iStart | Added: If adding data to a 2D array, the column at which the insertion starts in each row (default = 0).
$sDelim_Item $sDelim_Row | Added: If data passed as a delimited string these determine the number of rows/columns to be added.
$iForce | Added: Changes function behaviour - either forces addtion of added data as a single item or forces datatype for added items
_ArrayBinarySearch | Now supports 2D arrays.
$iColumn | Added: 0-based index of column to search (default = 0).
_ArrayConcatenate | Now supports 2D array swith equal number of columns.
_ArrayDelete | Now support multiple deletions.
$vRange | Altered: Element(s) to delete - either a single index, a range string or a 1D array with a count in the [0] element
_ArrayDisplay | Buttons at bottom of dialog can be hidden
_ArrayFindAll | Now supports searching 2D arrays by row as well as by column
$fRow | Added: If set to True, $iSubItem determines the row and not the column in a 2D array.
_ArrayInsert | Now supports 2D arrays and can insert multiple lines in the same or different positions in one call.
$vRange | Altered: Element(s) above which the insertion is to take place - either a single index, a range string or a 1D array with a count in the [0] element
$vValue | Added: Value(s) to insert - can be a single item, a delimited string or an array.
$iStart | Added: If inserting data to a 2D array, the column at which the insertion starts in each row (default = 0).
$sDelim_Item $sDelim_Row | Added: If data is passed as a delimited string these determine the number of rows/columns to be added.
$hDataType | Added: If $vValue is a delimited string the data is converted to a string. Assigning a datatype function (Number, HWnd, etc) forces it into that datatype
_ArrayMax | Now supports 2D arrays.
$iSubItem | Added: 0-based column to search.
_ArrayMaxIndex | Now supports 2D arrays.
$iSubItem | Added: 0-based column to search.
_ArrayMin | Now supports 2D arrays.
$iSubItem | Added: 0-based column to search.
_ArrayMinIndex | Now supports 2D arrays.
$iSubItem | Added: 0-based column to search.
_ArraySearch | Now supports searching 2D arrays by row as well as by column
$fRow | Added: If set to True, $iSubItem determines the row and not the column in a 2D array.
_ArraySwap | Completely rewritten to swap full or part columns/rows within a 2D array
$iIndex_1 $iIndex_2 | Altered: Index of the rows/columns to swap
$bCol | Added: If set to True, $iIndex_1 and $iIndex_2 determine the column and not the row.
$iStart $iEnd | Added: Elements within the rows/columns to swap.
_ArrayToClip | Now just a simple wrapper for _ArrayToString. See details of parameters for that function.
_ArrayToString | Now supports 2D arrays
$sDelim_Item $sDelim_Row | Added: Determine the column/row delimiters.
$iStart_Row $iEnd_Row | Added: Limit the rows to extract.
$iStart_Col $iEnd_Col | Added: Limit the columns to extract.
_ArrayTranspose | Now transposes 1D arrays
_ArrayTrim | Now supports 2D arrays
$iSubItem | Added: Column to trim
_ArrayUnique | For consistency with all other functions $iColumn is now 0-based, not 1-based

New functions/parameters

New UDF Function | Comments
--- | ---
_ArrayColInsert | This function is used to insert columns into 1D or 2D arrays.
_ArrayColDelete | This function is used to delete columns from 2D arrays.
_ArrayExtract | This function extracts a smaller array from inside 1D and 2D arrays.
_ArrayShuffle | This function uses the FisherYates algorithm to shuffle all or some of the rows of 1D and 2D arrays. The shuffle can be limited to a specific column in a 2D array.

Unchanged functions

Unchanged UDF Function
_ArrayCombinations
_ArrayPermute
_ArrayPop
_ArrayPush
_ArrayReverse