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>'; ?>
关于数组的更多高级用法我们将在后续课程中继续讲解,现在可以进入下一课了。