首页 / PHP 入门教程 / PHP 数组基础

PHP 入门教程

PHP 数组基础

本教程共 65 篇 · 第 13 篇 · 更新于 2026-07-24 · 约 3 分钟阅读

PHPPHP8数组索引数组关联数组数组遍历

13. PHP 数组基础

本节目标:掌握数组的创建、访问和遍历。学完你能用数组组织批量数据,替代大量零散变量。

13.1 什么是数组

数组可以在一个变量中存储多个值:

<?php
// 不用数组:需要三个变量
$fruit1 = "苹果";
$fruit2 = "香蕉";
$fruit3 = "橙子";

// 用数组:一个变量搞定
$fruits = ["苹果", "香蕉", "橙子"];
?>

13.2 索引数组

索引数组使用数字作为键,从 0 开始:

<?php
// 创建方式 1:直接赋值
$colors = ["红色", "绿色", "蓝色"];

// 创建方式 2:逐个添加
$colors[0] = "红色";
$colors[1] = "绿色";
$colors[2] = "蓝色";

// 创建方式 3:不指定键,自动递增
$colors[] = "黄色";  // 键为 3

// 访问元素
echo $colors[0];  // 红色
echo $colors[1];  // 绿色
?>
Tip

[] 是 PHP 5.4+ 的短数组语法,推荐优先使用。旧版 PHP 使用 array()

13.3 关联数组

关联数组使用自定义字符串作为键:

<?php
$user = [
    "name" => "张三",
    "age" => 25,
    "email" => "zhangsan@example.com"
];

// 访问元素
echo $user["name"];   // 张三
echo $user["age"];    // 25

// 添加新元素
$user["city"] = "北京";

// 修改元素
$user["age"] = 26;

// 删除元素
unset($user["email"]);
?>

13.4 混合数组

PHP 数组的键可以是整数或字符串,甚至混合:

<?php
$mixed = [
    0 => "a",
    "key" => "b",
    2 => "c",
    "foo" => "d"
];

print_r($mixed);
?>

13.5 多维数组

数组的元素也可以是数组,形成多维结构:

<?php
// 二维数组:表格型数据
$users = [
    ["id" => 1, "name" => "张三", "age" => 25],
    ["id" => 2, "name" => "李四", "age" => 30],
    ["id" => 3, "name" => "王五", "age" => 28]
];

// 访问二维数组
echo $users[0]["name"];  // 张三
echo $users[1]["age"];   // 30

// 三维数组示例
$cube = [
    [[1, 2], [3, 4]],
    [[5, 6], [7, 8]]
];
echo $cube[1][0][1];  // 6
?>

13.6 数组遍历

foreach 遍历(推荐)

<?php
$fruits = ["苹果", "香蕉", "橙子"];

// 只取值
foreach ($fruits as $fruit) {
    echo $fruit . "\n";
}

// 取键和值
$prices = ["苹果" => 5, "香蕉" => 3, "橙子" => 4];
foreach ($prices as $fruit => $price) {
    echo "$fruit: {$price}元\n";
}
?>

for 遍历(仅适合索引数组)

<?php
$items = ["a", "b", "c", "d"];

for ($i = 0; $i < count($items); $i++) {
    echo "$i: " . $items[$i] . "\n";
}
?>
Note

count() 放在循环条件中,每次都会重新计算。对于大数组,建议先存到变量中:

$len = count($items);
for ($i = 0; $i < $len; $i++) { ... }

while + each(已弃用)

PHP 7.2 起 each() 函数已弃用,PHP 8.0 已移除。请使用 foreach 替代。

13.7 数组长度与判空

<?php
$arr = [1, 2, 3];

echo count($arr);        // 3
echo sizeof($arr);       // 3(count 的别名)

// 判断数组是否为空
if (empty($arr)) {
    echo "数组为空";
}

if (count($arr) === 0) {
    echo "数组为空";
}

// PHP 8.0+ 判断数组非空
if ($arr !== []) {
    echo "数组有元素";
}
?>

13.8 数组展开(PHP 7.4+)

<?php
$arr1 = [1, 2, 3];
$arr2 = [4, 5, 6];

// 用展开运算符合并数组
$merged = [...$arr1, ...$arr2];  // [1, 2, 3, 4, 5, 6]

// 也可以在中间插入
$result = [0, ...$arr1, 99];  // [0, 1, 2, 3, 99]
?>

13.9 数组解构(PHP 7.1+)

<?php
$data = ["张三", 25, "北京"];

// 解构赋值
[$name, $age, $city] = $data;
echo "$name 住在 $city";  // 张三住在 北京

// 关联数组解构
$user = ["name" => "李四", "age" => 30];
["name" => $n, "age" => $a] = $user;
echo $n;  // 李四
?>

来源:参考了 w3cschool「PHP 数组」、runoob「PHP 数组」「PHP 多维数组」以及 php.net 官方文档,综合改写后所得。