PHP 中的数组实际上是一个有序图。图是一种把 values 映射到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组来使用,或列表(矢量),散列表(是图的一种实现),字典,集合,栈,队列以及更多可能性。因为可以用另一个 PHP 数组作为值,也可以很容易地模拟树。
所谓的数组下标可以视为资料内容在此数组中的识别名称,通常被称为数组下标。
当索引值为数值时,也代表此资料内容在数组中的储存位置。
数组中有几个索引值就被称为几维数组。
数组分类:
在PHP中有两种数组:
索引数组和关联数组。
索引(indexed)数组的索引值是整数,以0开始。当通过位置来标识东西时用索引数组。
关联(associative)数组以字符串做为索引值,关联数组更像操作表。索引值为列名,用于访问列的数据。
数组常用的赋值方式:
由于 PHP 是属于弱类型数据,因此源代码中的数组并不需要经过特别的声明操作,直接将一组数值指定给某一数组元素即可。
一般情况下数组的赋值有两种方式:
a. 直接赋值方式 如: $a[0]=‘spam@126.com’; $a[1]=‘abuse@sohu.com’;
b. 使用array函数 如: $a=array(“spam@126.com “,”abuse@sohu.com”);
或者使用简洁定义 $a=[“spam@126.com “,”abuse@sohu.com”]
直接赋值格式:
$数组变量名[索引值]=资料内容
其中索引值(下标)可以是一个字符串或一个整数。等价于整数(不以0开头)的字符串值被当作整数对待。因此,数组$array[3]与$array[‘3’]是引用相同的元素。但是$array[‘03’]引用的另外不同的元素。
一维数组
数组中索引值(下标)只有一个的数组称为一维数组。在数组中这是最简单的,也是最常用的了。
实例1:
实例2:
数组的遍历方式
1. 使用for语句循环遍历数组
2. 使用foreach语句遍历数组
foreach循环结构:
foreach 仅用于数组,有两种语法。
foreach (array_expression as $value) {
…..statement
}
foreach (array_expression as $key => $value) {
…..statement
}
第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步
第二种格式做同样的事,只除了当前单元的键值也会在每次循环中被赋给变量 $key。
注: 当 foreach 开始执行时,数组内部的指针会自动指向第一个单元。此外注意foreach 所操作的是指定数组的一个拷贝,而不是该数组本身。
3. 联合使用list( )、each( )和while循环遍历数组
array each ( array array)
返回 array 数组中当前指针位置的键/值对并向前移动数组指针。键值对被返回为四个单元的数组,键名为 0,1,key 和 value。单元 0 和 key 包含有数组单元的键名,1 和 value 包含有数据。
如果内部指针越过了数组的末端,则 each() 返回 FALSE。
each() 经常和list( ) 结合使用来遍历数组。
void list ( mixed ...)
它不是真正的函数,而是语言结构。list() 用一步操作给一组变量进行赋值。
注: list() 仅能用于数字索引的数组并假定数字索引从0开始。
在执行 each() 之后,数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停留在最后一个单元。如果要再用 each 遍历数组,必须使用reset( )。
4. 使用数组的内部指针控制函数遍历数组
数组指针的控制函数
由于数组是由多笔资料集合而成,所以当程序需要运算处理其中某个索引位置的资料内容时,会由数组之中内定的指针,指向目标资料,以提供程序作正确的读取。下面针对数组指针控制的相关函数,作简单的说明介绍:
next()、prev()、end()及 reset()
这四个函数可以控制目前数组中的指针位置。next()负责将指针向后移动,prev()负责将指针向前移动;end()会将指针指向数组中最后一个元素,而 reset()函数则会将目前指针无条件移至第一个索引位置。
语法格式:
mixed next(数组名称); mixed prev(数组名称);
mixed end(数组名称); mixed reset(数组名称);
mixed current(数组名称); mixed key(数组名称);