数组是一组数据有序排列的集合,把一系列数据按一定规则组织起来,形成一个可操作的整体。
数组array是一组有序的变量,其中每个变量被称为一个元素。
每个元素由一个特殊的标识符来区分,这个标识符称为键(也称为下标)
数组中的每个实体都包含两项:键和值。
PHP中数组可以是整数、浮点数、字符串、布尔值或数组,而且数组中的元素可以是由不同类型的数据组成。
数组类型
-
PHP支持两种数组:索引数组(indexed array)和联合数组(associative array),前者使用数字作为键,后者使用字符串作为键。
-
数字索引数组:PHP数字索引一般表示数组元素在数组中的位置,它由数字组成,下标从0开始,数字索引数组默认索引值从数字0开始,不需要特别指定,PHP会自动为索引数组的键名赋一个整数值,然后从这个值开始自动增量,当然,也可以指定从某个位置开始保存数据。
-
数组可以构造成一系列“键-值(key-value)”对,其中每一对都是数组的一个项目或元素(element)。对于列表中的每个项目,都有一个与
之关联的键(key)或索引(index)
声明数组
-
在PHP中声明数组的方式主要有两种:一种是应用array()函数声明数组,另一种是直接通过为数组元素赋值的方式声明数组
通过array()函数声明数组:
$array_r_name = array([[key]=>value],[[key]=>value],...[[key]=>value]];
注意:元素键名在数组中不能重复,如有重复后面的元素将会覆盖前面同键名的元素,它与数组元素一一对应。
如不指定数组元素键名,PHP将按照第1个出现的未指定键名的元素的索引名为O,之后元素的键名为当前最大整数键名加1。
$arr_tmp = array(“张三”,3=>“男”,32,“G03”=>“广州”,“大二”);
解释:该数组第1个元素没有指定键名,所以其默认键名为O,因为第2个元素指定了键名为3,故第3个元素的键名为3+1即4,第5个元素的键名为4+1即5,该数组的结构如下所示:
Array([0]=>张三 [3]=>男 [4]=>32 [G03]=>广州 [5]=>大二)
- 直接赋值方式
一个变量声明为一个数组元素有三种方法:
第一种方法:不指定数组元素的“键”
示例程序:
$characters[] = "humour";
第二种方法:将数组元素的“键”指定为某个整数
示例程序:
$interests[2] = "music";
第三种方法:将数组元素的‘“键”指定为某个字符串
示例程序:
$colors["red"] = "red";
- 二维数组
二维数组是指数组的元素本身也是数组。二维数组的定义与使用与一维数组相同,不同的是数组元素也是数组。
定义二维数组:
$arr_goods = array(
"tv"=>array("日立","三星","海信","创维"),
"computer"=>array("think pad","dell","联想","华硕"),
"network"=>array("tp-link","d-link","华为")
);
访问数组元素:
$arr_goods[“network”][0];//访问键名为network的第1个二级元素
遍历连续整数“键”的数组
- 输出数组元素
bool print_r ( mixed expression )
如果该函数的参数expression为普通的整型、字符型或实型变量,则输出该变量本身。如果该参数为数组,则按一定键值和元素的顺序显示出该数组中的所有元素。
void var_dump ( mixed expression [, mixedexpression [, ...]] )
此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
- count()函数
语法格式:
int count (array arr[, intmode])
函功能:统计并计算数组arr中元素的个数。如果数组arr是多维数组,可将mode 参数的值设为常量COUNT_RECURSIVE(或整数1),计算数组arr中所有元素的个数;mode 的默认值是0。
非连续“键”的数组遍历
- key()函数
语法格式:
mixed key(array &arr)
函数功能:返回数组arr中“当前指针”所指元素的“键”名。
- current()函数
语法格式:
mixedcurrent (array &arr)
函数功能:返回数组arr中“当前指针”所指元素的“值”。
- next()函数
语法格式:
mixednext (array &arr )
函数功能:移动数组arr“当前指针”(current),使“当前指针”(current)指向数组arr的下一个元素;然后返回“当前指针”(current)所指的元素“值”。
说明:当“当前指针”(current)指向数组的最后一个元素时,使用next()函数移动“当前指针”(current)后,“当前指针”(current)为“空”,并且“当前指针”(current)指向的元素“值”为FALSE。
- array_combine()函数
语法格式:
arrayarray_combine (array keys, array values)
函数功能:创建一个新数组,用数组keys的值作为新数组的“键”,数组values的值作为新数组的“值”。
eg:
<?php
$colors = array('orange','red','yellow');
$fruits = array('orange','apple','banana');
$temp = array_combine($colors,$fruits);
do{
$key = key($temp);
$value = current($temp);
echo $key.'=>'.$value.'<br>';
}while(next($temp));
?>
输出:orange=>orange
red=>apple
yellow=>banana
foreach语言结构
foreach(arrayas $value);
使用该方法循环遍历给定的数组array,每次循环中,“当前指针”所指元素的“值”赋给变量$value
,然后移动数组array“当前指针”,使“当前指针”指向下一个元素,周而复始,直至数组array最后一个元素,此时“当前指针”为空。
foreach(arrayas $key=>$value);
使用该方法循环遍历给定的数组array,每次循环中,“当前指针”所指元素的“键”名赋给变量$key
,“当前指针”所指元素的值赋给变量$value
,然后移动数组array“当前指针”,使“当前指针”指向下一个元素,周而复始,直至数组array最后一个元素,此时“当前指针”为空。