4.1 数组的概念和定义
本节介绍数组的基本概念以及在PHP中如何定义数组。
4.1.1 数组的概念
数组是在内存中保存一组数据的数据结构,它具有如下特性。
• 和变量一样,每个数组都有一个唯一标识它的名称。
• 同一数组的数组元素应具有相同的数据类型。
• 每个数组元素都有键(key)和值(value)两个属性。键用于定义和标识数组元素,键可以是整数或字符串;值就是数组元素对应的值。因此,数组元素就是一个“键/值对”。
• 一个数组可以有一个或多个键,键的数量也称为数组的维度。拥有一个键的数组就是一维数组,拥有2个键的数组就是二维数组,依此类推。
图4-1所示为一维数组的示意图。灰色方块中是数组元素的键,白色方块中是数组元素的值(本书以后也会使用这种形式)。数组arr中共有7个元素,它们的键分别是0、1、2、3、4、5、6。以整数为键是很常用的用法。
图4-1 一维数组的示意图
图4-2所示为二维数组的示意图。数组arr2中共有4个元素,它们的键分别是[0][0]、[0][1]、[1][0]和[1][1]。
图4-2 二维数组的示意图
4.1.2 定义一维数组
可以使用array()函数来定义一维数组,其基本语法结构如下:
array ( [key => ] value
, ……
)
其中,key表示数组中关键字,它可以是整数和字符串;value表示关键字key对应的值。下面是一个定义数组的例子:
$arr = array("first_element" => "CPU", 2 => "内存");
上面代码定义了一个数组变量$arr。数组$arr中包含了两个元素,分别使用字符串first_element和整数2作为键来标识。第1个数组元素的值为“CPU”,第2个数组元素的值为“内存”。
在定义数组时,也可以不指定键。此时,程序会自动使用从0开始的整数作为关键字。
【例4-1】 一个定义一维数组的例子。
$arr = array("CPU", "内存", "硬盘");
【例4-2】 例4-1的代码等同于下面的代码:
$arr = array(0 => "CPU", 1 => "内存", 2 => "硬盘");
可以通过向数组赋值的方式来添加数组元素。例如,执行下面的语句可以在数组$arr 中添加一个键为4的元素,它的值为“声卡”。
$arr[4] = "声卡";
也可以不指定键,只在数组变量后面加一对空的方括号来添加数组元素,代码如下:
$arr[] = "显卡";
执行此语句后,会在数组$arr中增加一个键为5的元素,元素值为“显卡”。此时数组arr的内容如图4-3所示。
图4-3 数组arr的内容
调用print_r()函数可以打印数组的内容。
【例4-3】 打印数组$arr的内容。
<?PHP
$arr = array(0 => "CPU", 1 => "内存", 2 => "硬盘");
$arr[4] = "声卡";
$arr[] = "显卡";
print_r($arr);
?>
运行结果如图4-4所示。
图4-4 例4-2的运行结果
也可以调用var_dump ()函数来打印数组的明细内容。
【例4-4】 打印数组$arr的明细内容。
<?PHP
$arr = array(0 => "CPU", 1 => "内存", 2 => "硬盘");
$arr[4] = "声卡";
$arr[] = "显卡";
var_dump($arr);
?>
运行结果如下:
array (size=5)
0 => string 'CPU' (length=3)
1 => string '内存' (length=4)
2 => string '硬盘' (length=4)
4 => string '声卡' (length=4)
5 => string '显卡' (length=4)
4.1.3 定义多维数组
可以将多维数组视为数组的嵌套,即多维数组的元素值也是一个数组,只是维度比其父数组小一。二维数组的元素值是一维数组,三维数组的元素值是二维数组,依此类推。可以使用array()函数来定义多维数组,其基本语法结构如下:
array ( [key => ] array([key => ] value )
, ……
)
其中value还可以嵌套array()函数来定义数组。
【例4-5】 一个定义二维数组的例子。
$arr2 = array( array("CPU", "内存"), array("硬盘","声卡"));
此时数组arr的内容如图4-5所示。
图4-5 例4-5中数组arr的内容
【例4-6】 例4-5的代码等同与下面的代码:
$arr2 = array(0 => array("CPU", "内存"), 1 => array("硬盘","声卡"));
也可以通过向数组赋值的方式来创建数组并添加数组元素。
【例4-7】 例4-5的代码等同与下面的代码:
$arr2[0][0] = "CPU";
$arr2[0][1] = "内存";
$arr2[1][0] = "硬盘";
$arr2[1][1] = "声卡";
【例4-8】 不指定键,只在数组变量后面加一对空的方括号来添加数组元素,代码如下:
$arr2[0][] = "CPU";
$arr2[0][] = "内存";
$arr2[1][] = "硬盘";
$arr2[1][] = "声卡";
共有条评论 网友评论