array:remove
Returns an array containing all the members of the supplied array, except for the members at specified positions.
Signature
array:remove(
$array as array(*),
$positions as xs:integer*
) as array(*)Properties
This function is deterministic, context-independent, and focus-independent.
Rules
The function returns an array of size array:size($array) - fn:count(fn:distinct-values($positions))
containing all members from $array
except the members whose position (counting from 1) is present in the sequence $positions.
The order of the remaining members is preserved.
The result of the function, except in error cases, is given by the expression
array:join(for $i in (1 to array:size($array))[not(. = $positions)] return [$array($i)])
Error Conditions
A dynamic error is raised [ERRFOAY0001] if any integer in $positions is not in the range 1 to
array:size($array) inclusive. By implication, an error occurs if $array is empty, unless $positions
is also empty.
Examples
The expression array:remove(["a", "b", "c", "d"], 1) returns ["b", "c", "d"].
The expression array:remove(["a", "b", "c", "d"], 2) returns ["a", "c", "d" ].
The expression array:remove(["a"], 1) returns [ ].
The expression array:remove(["a", "b", "c", "d"], 1 to 3) returns ["d"].
The expression array:remove(["a", "b", "c", "d"], ()) returns ["a", "b", "c", "d"].