PHP+MySQL Web应用开发教程
上QQ阅读APP看书,第一时间看更新

5.1 数组的基本概念

数组由多个元素组成,元素之间相互独立,并使用“键”(key)来识别,每个元素相当于一个变量,用来保存数据。因此可以将数组视为一串内存空间连续的变量组合。

5.1.1 为什么引入数组

使用标量数据类型定义的变量只能存储单个“数据”,仅依靠标量数据类型远不能解决现实生活中的一些常见问题,例如一个设置个人信息的页面,如图5-1所示。

图5-1 个人信息页面

从图5-1可以得出以下两点。

1)用户可选的“兴趣爱好”选项的个数有35项之多,编程过程中不可能为35个“兴趣爱好”选项设置35个变量与之对应。

2)“兴趣爱好”选项的个数有可能会继续增加,无法确定选项个数。

为此,需引人数组数据类型更好地解决上述问题。

5.1.2 数组是什么

数组是一组数据的集合,将数据按照一定规则组织起来,形成一个可操作的整体。数组是对大量数据进行有效组织和管理的手段之一,通过数组函数可以对大量性质相同的数据进行存储、排序、插入、删除等操作,从而可以有效地提高程序开发效率及改善程序的编写方式。

数组的本质是储存、管理和操作一组变量。数组与变量的比较效果如图5-2所示。

图5-2 变量与数组

变量中保存单个数据,而数组中保存的则是多个变量的集合。使用数组的目的就是将多个相互关联的数据组织在一起形成一个整体,作为一个单元使用。

数组中的每个实体都包含两项:键和值。其中,键可以是数字、字符串或者数字和字符串的组合,用于标识数组中相应的值;而值被称为数组中的元素,可以定义为任意数据类型,甚至是混合类型。最终通过键来获取相应的值。例如,一个足球队通常会有几十人,认识他们的时候首先会把他们看作某队的成员,然后通过他们的号码来区分每一名队员。这时候,球队就是一个数组,而号码就是数组的下标(键)。当指明是几号队员的时候,就找到了这名队员(值)。

5.1.3 数组的类型

PHP中将数组分为一维数组、二维数组和多维数组。无论是一维还是多维,都可以统一将数组分为两种:数字索引数组(indexed array)和关联数组(associative array)。数字索引数组使用数字作为键名(图5-2中展示的就是一个数字索引数组),关联数组使用字符串作为键名(如图5-3所示)。

图5-3 关联数组

(1)数字索引数组

数字索引数组,下标(键名)由数字组成,默认从0开始,每个数字对应数组元素在数组中的位置,不需要特别指定,PHP会自动为数字索引数组的键名赋一个整数值,然后从这个值开始自动增量。当然,也可以指定从某个具体位置开始保存数据。

数组中的每个实体都包含两项:键名和值。可以通过键名来获取相应数组元素(值),如果键名是数值那么就是数字索引数组,如果键名是数值与字符串的混合,那么就是关联数组。

下面创建一个数字索引数组,代码如下:

(2)关联数组

关联数组,下标(键名)由数值和字符串混合的形式组成。如果一个数组中,有一个键名不是数字,那么这个数组就叫作关联数组。

关联数组(associative array)使用字符串键名来访问存储在数组中的值,如图5-2所示。

下面创建一个关联索引数组,代码如下:

说明:关联数组的键名可以是任何一个整数或字符串。如果键名是一个字符串,则要给这个键名或索引加上个定界修饰符——单引号(')或双引号(")。对于数字索引数组,为了避免不必要的麻烦,最好也加上定界符。