Arrays are collection data structures that can contain zero or more elements. The elements are accessed by their position (index), which usually starts at 0. Depending on the programming language arrays can be of fixed size (the size of the array is defined at creation time and cannot be changed later on) or dynamically sized (the array is created with an initial size which can be changed later on).
Arrays can also have multiple dimensions (for example, a chess board could be represented as a 2-dimensional fixed-size 8x8 array). Not all programming languages support multidimensional arrays, but the can normally be emulated via nested arrays. An array of arrays, sometimes also called a jagged array, can be used the same way as a 2-dimensional array. The major difference is that in a jagged array the nested arrays are not guaranteed to have the same size (hence the name).