Note that arrays are shared and use reference counts to keep track of their references. This will have the effect that you can have two variables pointing to the same array, and when you change an index in in it, both variables will show the change.
Here follows a list of operators that applies to arrays: In this list a and b is used to represent an array expression:
a + b | summation ( ({1}) + ({2}) returns ({1,2}) ) |
a - b | subtraction, returns a copy of a with all values that are present in b removed, ( ({1, 2, 3}) - ({2}) returns ({1,3}) ) |
a & b | intersection, return an array with all values that are present in both a and b |
a | b | union, return an array with all values that are present in a or b, differs from summation in that values that are present in both a and b are only returned once. |
a ^ b | xor, return an array with all values that are present in a or b but not in both. |
a * c | multiplication (c is a string) same thing as implode(a,c) |
a == b | returns 1 if a is the same array as b, same size and values is not enough. |
a != b | returns 0 if a is the same array as b, same size and values is not enough. |
! a | boolean not, returns 0 |
a[c] | indexing, returns element c in the array (c is an int) |
a[c]=d | setting, sets element c in the array to d (c is an int) |
a[c..d] | range (c & d are ints) returns an array containing a pice of the array a. The piece starts at element c and ends (and includes) element d. |