5.3 创建数组
与其他很多语言的数组实现方式不同,PHP不需要在创建数组时指定其大小。事实上,因为PHP是一种松散类型的语言,所以甚至不需要在使用数组前先行声明。尽管没有限制,PHP仍提供了正式和非正式的数组声明方法。两个方法各有优点,都值得学习。本节将分别讨论这两种方法,首先来介绍非正式的方法。
要引用PHP数组中的各个元素,可以用一对中括号来指示。因为数组没有大小限制,所以只需建立引用就可以创建数组,例如:
![]()
然后,可以如下显示数组$states的第一个元素:
![]()
接下来,可以为数组索引映射新值,从而添加其他的值,如下:

有趣的是,如果认为索引值是数值索引而且是递增的,还可以在创建时省略索引值:

用这种方式创建关联数组也同样很简单,只不过必须一直使用关联索引引用(即不可省略)。下面的示例创建了一个数组,它将美国州名映射到其加入联邦的日期:

下面要讨论的array()函数在创建数组方面也有同样的功能,但更显正式。
1. array()
![]()
array()函数接受0个或多个元素作为输入,返回一个包含这些输入元素的数组。下面是一个使用array()创建索引数组的例子:
![]()
还可以使用array()创建一个关联数组,如下:

2. list()
![]()
list()函数与array()类似,只是它可以在一次操作中从一个数组内提取多个值,同时为多个变量赋值。从数据库或文件中提取信息时,这种构造尤其有用。例如,假设你希望格式化并输出从一个文本文件中读取的信息。文件的每一行都包含用户信息,如姓名、职业和喜爱的颜色,每一项用竖线分隔。典型的一行如下所示:
![]()
可以通过一个简单的循环使用list()来读取每一行,将各部分数据赋给变量,按照需要格式化并输出数据。下面显示了如何使用list()同时为多个变量赋值:

然后会读取每一行,并如下格式化:
![]()
回顾一下这个例子,list()依靠函数explode()将每一行分解为三个元素,这里,explode()使用竖线作为元素分隔符。(explode()函数将在第9章中正式介绍。)然后,这些元素分别赋给了$name、$occupation和$color。至此,余下的只是如何格式化以及显示到浏览器。
3. range()
![]()
range()函数是一个快速创建数组的简单方法,并会使用low到high范围的整数值填充数组。这个函数将返回一个包含此范围内所有整数的数组。
作为一个例子,假设需要一个数组,其中包含骰子中所有可能出现的值:
![]()
可选的step参数为确定范围内成员之间的增长幅度(步长)提供了一种简便方法。例如,如果希望有一个包含0到20之间所有偶数的数组,就可以使用步长值为2:
![]()
range()函数还可以用于字符序列。例如,假设希望创建一个包含字母A到F的数组:
![]()







