PHP课程 - 第10课 - 数组
到目前为止,我们只学习了数字型和字符串型变量,而本课我们将接触一种新的数据类型——数组(Array)。数组可以同时包含数字、字符串等不同类型的变量,因此它们被称为“数组”。
数组的本质是:由一组键(key)和值(value)组成的集合。每个键对应一个值。例如,若键是 1、2、3,对应的值可能是 4、"Hello World"、true。数组的声明方式与变量相同,都以美元符号开头:
$tree = array();
但在创建数组时,我们需要使用 array() 函数。
其实,在 PHP 中像声明变量那样显式地声明数组并不是必须的。但为了让代码更清晰,尤其是在阅读他人代码时,明确地声明类型总是更好。
现在我们来定义上面提到的数组:
<?php
$tree = array(
1 => 4,
2 => 'Hello World',
3 => true,
);
?>
注意这个语法:首先我们像普通变量一样赋值;接着关键字 array 表示该变量是一个数组;圆括号中列出了键值对。
其结构如下:
array( 键1 => 值1, 键2 => 值2, );
键和值之间用 => 符号连接,每个键值对之间用逗号分隔。
数组也可以写成一行:
<?php $tree = array(1 => 4, 2 => 'Hello World', 3 => true,); ?>
两种写法的效果完全相同,只是分行写更容易阅读。打印数组可以使用函数 print_r(),与 print 不同,它使用括号。
<?php
$tree = array(
1 => 4,
2 => 'Hello World',
3 => true,
);
print_r($tree);
?>
结果:
Array ( [1] => 4 [2] => Hello World [3] => 1 )
若加上 <pre> 标签,输出效果更整齐:
<?php
$tree = array(
1 => 4,
2 => 'Hello World',
3 => true,
);
print '<pre>';
print_r($tree);
print '</pre>';
?>
输出如下:
Array
(
1 => 4,
2 => 'Hello World',
3 => true,
)
现在我们已经知道如何创建数组,接下来学习如何从数组中提取数据:
<?php
$tree = array(
1 => 4,
2 => 'Hello World',
3 => true,
);
print $tree[2];
?>
这样我们就输出了数组中键为 2 的元素 “Hello World”。要访问数组中的值,只需写出数组名和对应的键,例如:$tree[1]、$tree[3]。
要向数组添加新元素,只需省略键:
<?php
$tree = array(
1 => 4,
2 => 'Hello World',
3 => true,
);
$tree[] = '新增元素';
print '<pre>';
print_r($tree);
print '</pre>';
?>
输出:
Array
(
[1] => 4
[2] => Hello World
[3] => 1
[4] => 新增元素
)
当键留空时,PHP 会自动分配下一个顺序数字作为键名。当然,我们也可以指定任意键名:
<?php
$tree = array(
1 => 4,
2 => 'Hello World',
3 => true,
);
$tree[6] = '其他元素';
print '<pre>';
print_r($tree);
print '</pre>';
?>
此时数组的键为 1、2、3、6,并不会自动生成缺失的 4、5。若要检测某个键是否存在,可以使用:
if(empty($tree[104])){
// 键不存在
}
若给已有的键重新赋值,则会覆盖原值:
<?php
$tree = array(
1 => 4,
2 => 'Hello World',
3 => true,
);
$tree[3] = '被替换的元素';
print '<pre>';
print_r($tree);
print '</pre>';
?>
这样不会创建新元素,而是修改了第 3 个键的值。
数组的键也可以是字符串:
<?php
$tree = array(
1 => 4,
2 => 'Hello World',
'key3' => true,
);
print '<pre>';
print_r($tree);
print '</pre>';
?>
此时键名用引号包裹(单引号或双引号均可),访问该值的方法如下:
print $tree['key3'];
目前你已经理解了数组的基本用法。接下来我们学习更高级的主题——多维数组。
PHP 多维数组
顾名思义,多维数组包含多个层级。一个直观的例子是“乘法表”:两个数字相乘的结果取决于这两个数字。
<?php $multi = array(); $multi[1][1] = 1; $multi[1][2] = 2; $multi[1][3] = 3; $multi[2][1] = 2; $multi[2][2] = 4; $multi[2][3] = 6; $multi[3][1] = 3; $multi[3][2] = 6; $multi[3][3] = 9; print '<pre>'; print_r($multi); print '</pre>'; ?>
一维数组只有一个键,而二维数组有两个键,三维数组有三个,以此类推。键的顺序很重要,比如 $multi[1][3] 与 $multi[3][1] 是不同的。
<?php $multi = array(); $multi[1][3] = 3; $multi[3][1] = 'Hello, World!'; print '<pre>'; print_r($multi); print '</pre>'; ?>
数组也可以一次性定义多个维度:
<?php
$multi = array(
1 => array(
1 => 1,
2 => 2,
3 => 3,
),
2 => array(
1 => 2,
2 => 4,
3 => 6,
),
3 => array(
1 => 3,
2 => 6,
3 => 9,
),
);
print '<pre>';
print_r($multi);
print '</pre>';
?>
关于数组的更多高级用法我们将在后续课程中继续讲解,现在可以进入下一课了。