//这篇文章主要参考了德哥的 文章,链接 :
http://blog.163.com/digoal@126/blog/static/163877040201201275922529/
德哥这篇文章写的很不错,在相关函数部分,尤其是 array_upper,array_lower 部分,有我自己的一些解释。
ARRAY类型包含几个重要的特征
- 维度
也就是几维数组, 不管怎么赋值, ARRAY最终必须是个矩阵.
例1 :
ARRAY[1,2,3,4] 是一维数组,
ARRAY[[1,2],[3,4],[5,6]] 是二维数组
例2 :
ARRAY[['digoal','zhou'],['a','b',c']] 是错误的. 因为第二个维度中的第一个array有2个元素, 而第二个array有3个元素. 不是一个矩阵. 个数必须一致.
同时类型也必须一致
例3 :
ARRAY[['digoal','zhou'],[1,2]] 是错误的. 因为['digoal','zhou']是text[]类型, 而[1,2]是int[]类型.
元素
一维数组ARRAY[1,2,3,4] 中的4个元素分别是 1, 2, 3, 4. 这些int型的值.二维数组ARRAY[[1,2],[3,4],[5,6]] 中的第一维度有3个元素是 ARRAY[1,2] , ARRAY[3,4] , ARRAY[5,6] 这些int[]类型的值. 第二个维度的第一个subscript的元素有两个, 分别是1,2 . 第二个subscript 分别是3,4. 第三个subscript分别是5,6.
元素之间的分隔符, 除了box类型是分号;, 其他类型的分隔符都是逗号,.扩展性
一维数组可以扩展, 二维数组无法扩展.
参考 http://blog.163.com/digoal@126/blog/static/163877040201201272718196/subscript
访问ARRAY中的元素需要提供subscript值. 默认是从1开始编号. 除非赋值的时候强制指定subscript
例1 :
ARRAY[[1,2],[3,4],[5,6]] as a
a[1][1] = 1;
a[1][2] = 2;
a[2][1] = 3;
a[2][2] = 4;
a[3][1] = 5;
a[3][2] = 6;
a第一个[]表示第一维度, 里面的数字代表第一维度中要访问的subscript,
a第二个[]表示第二维度, 里面的数字代表第二维度中要访问的subscript,
另外也可以访问ARRAY的slice.
例2 :
a[1:2][1:1] = {
{1},{3}}
第一个[]中的1表示低位subscript, 2表示高位subscript值.
第二个[]中左边的1表示低位subscript, 右边的1表示高位subscript值.
a[2:3][