您的位置: 网站首页 > 程序开发 > Visaul FoxPro程序设计 > 第4章 Visual FoxPro语言基础 > 【4.5 数 组】

4.5 数 组

 

4.5     

数组由一系列被称为元素的有序数据值构成,可以用序号引用这些元素。因为数组存在于内存中,所以它能够被快速访问,且便于处理。用户可以很容易地指定、处理数组中的元素。

Visual FoxPro中只能定义一维数组、二维数组,通过一个数值下标来引用,用一对圆括号和方括号都可以,如,

AB(10),AC[2,5]

4.5.1  数组的声明

数组同变量一样,可以拥有任意数据类型。在使用时必须先声明数组的类型,声明的方式有以下几种:

1)私有数组,用DECLARE DIMENSION声明。

2)全局数组,用PUBLIC声明。

3)局部数组,用LOCAL声明。

全局数组是指声明的数组可以在不同的过程和函数中使用,局部数组是指该数组只能在声明的过程或者函数中使用。例如定义两个数组:

DIMENSION AB(10),ARRAY AC[2,5]      &&声明为私有数组

DECLARE AB(10),ARRAY AC[2,5]        &&声明为私有数组

PUBLIC AB(10),ARRAY AC[2,5]         &&声明为全局数组

LOCAL AB(10),ARRAY AC[2,5]          &&声明为局部数组

4.5.2  为数组元素赋值

数组一旦被定义之后,该数组的每个元素就被置了一个逻辑值.F.,可以用EMPTY()函数来测定,如果为空则表示EMPTY(数组元素)=.T.,所以可以这样来测定数组中是否被置过值。

1)用赋值语句,例如,

AB(3)=45

Storeabcdto AC(2,1)

2)用SCATTER命令从当前记录中取特定字段的值赋给数组,例如,

scatter fields xh, xm, xb to ab

注意:数组长度、类型自动与所给字段相同。

3)用COPY TO ARRAY从当前记录中取所有字段的值赋给数组,例如,

copy to array ab

注意:同样,数组长度、类型自动与所给字段相同。

4)把数组中的数据传给当前表中的当前记录,格式如下:

gather from 数组名[fields 字段名表]

5)用数组向当前表添加记录,格式如下:

append from array 数组名[for 条件] [[fields 字段名表]

4.5.3  数据的下标

Visual FoxPro的数组起始下标是从1开始的,即以1为基准。二维数组的行数×列数所得到的结果,分配到一维数组的存储空间中。所以定义数组AB(10)AC[2,5]的结果是一样的。

数组的下标有一个换算关系,这种关系可以利用Visual FoxPro提供的AELEMENT()ASUBSCRIPT()函数来直接操作。第一个函数是根据给定的下标求序号,即一维数组的下标;第二个是根据序号求数组的下标。它们对一维数组没有意义,对二维数组可以进行序号和下标的操作。

4.5.4  处理数组元素

同样,用户可以使用下面的函数来处理数组中的元素。

1)排序SORT():可以按升序和降序对数组中的元素排序。

2)搜索ASCAN():在数组中搜索与一个表达式具有相同数据和数据类型的元素。

3删除ADEL():可以删除一维数组中的一个元素,或者删除二维数组的一行或一列。

4插入AINS():可以向一维数组中插入一个元素,或者者向二维数组插入一行或一列。