logo

额外区块类型 (EBT) - 全新的布局构建器体验❗

额外区块类型 (EBT) - 样式化、可定制的区块类型:幻灯片、标签页、卡片、手风琴等更多类型。内置背景、DOM Box、JavaScript 插件的设置。立即体验布局构建的未来。

演示 EBT 模块 下载 EBT 模块

❗额外段落类型 (EPT) - 全新的 Paragraphs 体验

额外段落类型 (EPT) - 类似的基于 Paragraph 的模块集合。

演示 EPT 模块 滚动

滚动

PHP课程 - 第10课 - 数组

09/10/2025, by Ivan

到目前为止,我们只学习了数字型和字符串型变量,而本课我们将接触一种新的数据类型——数组(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>';
?>

关于数组的更多高级用法我们将在后续课程中继续讲解,现在可以进入下一课了。