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 官方文档,综合改写后所得。