← PHP递归函数:让函数调用自己来解决问题的编程技巧 PHP索引数组:用数字下标管理有序数据列表 →

PHP数组入门:用键值对结构高效管理数据集合

原创 2026-05-09 PHP 已有人查阅

编程里经常需要处理一批相关的数据。比如一个班级的学生名单、一份商品价格表、或者一个用户提交的表单数据。你可以给每一条数据单独声明一个变量,但数据一多,变量名就会满天飞,代码会变得杂乱,处理起来也麻烦。

PHP数组就是为这种场景设计的。数组是一个能在一个变量里存放多个值的容器,每个值通过一个唯一的键来标识和访问。 这个键值对系统让数据的存取变得统一且有序。数组里可以混合存放整数、字符串、对象等不同类型的值,PHP不会在类型上限制你。

日常开发中,数组几乎无处不在——存配置项、处理表单、遍历数据库查询结果、缓存API返回数据。把数组的基础概念和三种类型搞清楚,是PHP学习中值得花时间的一环。

为什么用数组而不是一堆独立变量

假设你要存一个学生的五门成绩。不用数组的话,代码可能长这样:

$score1 = 85;
$score2 = 90;
$score3 = 78;
$score4 = 92;
$score5 = 88;

如果要算平均分,你得手动把五个变量名都写一遍。如果学生有二十门课呢?维护成本和出错概率都会增加。

用数组的话,所有成绩收进一个变量,遍历、计算都方便得多。

数组带来的几个实际好处:

  • 代码更简洁:一个变量容纳多个值,不用声明一堆分散的变量。

  • 遍历方便:配合foreach循环,能自然地逐个处理数据。

  • 排序容易:PHP内置了多种排序函数,数组数据排序不用自己写算法。

  • 容量自动扩展:往数组里添加新元素时,不需要提前声明大小,内存动态分配。

PHP的三种数组类型

PHP根据键的类型和数据的嵌套层级,把数组分为三类。每一类适用的场景不同。

数组类型 键的形式 主要用途
索引数组 从0开始的整数索引 存储有序列表,如用户名单、数字序列
关联数组 自定义的字符串键名 存储结构化信息,如配置项、用户档案
多维数组 数组里套数组 存储表格、矩阵、层级关系数据

一、索引数组:有序列表的存储方式

索引数组用从0开始的连续整数作为键。你不指定键时,PHP会自动按元素出现的先后顺序分配索引。它适合存那种“顺序有意义”的数据列表。

两种创建方式:

// 方式一:用array()函数一次声明
$languageList = array("PHP", "JavaScript", "Python", "Go");

// 方式二:逐个元素手动赋值
$languageList[0] = "PHP";
$languageList[1] = "JavaScript";
$languageList[2] = "Python";
$languageList[3] = "Go";

两种方式效果一样。方式一简洁,适合初始化时已知所有元素;方式二灵活,适合在程序运行过程中逐步填充数据。

访问和输出:

<?php
$toolList = array("VSCode", "Git", "MySQL", "Docker");

echo "我常用的开发工具:<br/>";
echo "编辑器:{$toolList[0]}<br/>";
echo "版本管理:{$toolList[1]}<br/>";
echo "数据库:{$toolList[2]}<br/>";
echo "容器:{$toolList[3]}<br/>";
?>

输出:

我常用的开发工具:
编辑器:VSCode
版本管理:Git
数据库:MySQL
容器:Docker

通过$数组名[索引]的方式来取出某个位置的值。索引从0开始,第一个元素是[0],第四个是[3]

二、关联数组:用键名标注每条数据

索引数组的问题在于,时间长了你不一定记得[2]存的是什么。关联数组用自定义的字符串作为键,让每个值都有一个带含义的标签。它更像一张小表格——键是字段名,值是对应的数据。

两种创建方式:

// 方式一:用array()函数,键值对用=>连接
$userProfile = array(
    "姓名" => "张明",
    "年龄" => 28,
    "城市" => "广州",
    "邮箱" => "alan@ebingou.cn"
);

// 方式二:逐个键名手动赋值
$userProfile["姓名"] = "张明";
$userProfile["年龄"] = 28;
$userProfile["城市"] = "广州";
$userProfile["邮箱"] = "alan@ebingou.cn";

=>这个符号(叫双箭头操作符)左边是键,右边是值。键名用引号括起来。

访问和输出:

<?php
$employeeSalary = array(
    "张伟" => 35000,
    "李娜" => 45000,
    "王磊" => 28000
);

echo "员工薪资明细:<br/>";
echo "张伟的薪资:{$employeeSalary['张伟']} 元<br/>";
echo "李娜的薪资:{$employeeSalary['李娜']} 元<br/>";
echo "王磊的薪资:{$employeeSalary['王磊']} 元<br/>";
?>

输出:

员工薪资明细:
张伟的薪资:35000 元
李娜的薪资:45000 元
王磊的薪资:28000 元

$数组名['键名']访问某个特定条目。键名在这里是"张伟"、"李娜",它们就像表格的行标签,让数据的语义一目了然。

个人经验分享: 关联数组在PHP开发里使用频率非常高。处理数据库查询结果、配置文件、API返回的JSON数据,最终映射到PHP里基本都是关联数组。在代码号学习编程的过程中,建议把关联数组的存取语法练到条件反射的程度——用方括号加引号取键值,用=>定义键值对,这些操作会成为日常编码的基础动作。

三、多维数组:在数组中嵌套数组

有时候数据本身就有层级关系。比如一个班级里每个学生有多门课程的成绩,或者一个产品分类下面有多款产品。这时候需要一个数组里再套数组,形成多维数组

常见的多维数组是二维数组——外层数组的每个元素本身也是一个数组。

<?php
// 每个学生是一个关联数组,整体放进一个外层数组
$studentScores = array(
    "张明" => array(
        "数学" => 85,
        "英语" => 90,
        "语文" => 78
    ),
    "李华" => array(
        "数学" => 92,
        "英语" => 88,
        "语文" => 95
    ),
    "王芳" => array(
        "数学" => 76,
        "英语" => 82,
        "语文" => 80
    )
);

// 访问嵌套的数据:外层键指明学生,内层键指明科目
echo "张明的英语成绩:" . $studentScores["张明"]["英语"] . " 分<br/>";
echo "李华的数学成绩:" . $studentScores["李华"]["数学"] . " 分<br/>";
echo "王芳的语文成绩:" . $studentScores["王芳"]["语文"] . " 分<br/>";
?>

输出:

张明的英语成绩:90 分
李华的数学成绩:92 分
王芳的语文成绩:80 分

访问二维数组用两个方括号:第一个定位外层数组的键,第二个定位内层数组的键。如果还有更深层级,就继续加方括号,$arr['key1']['key2']['key3']这样。

本节课程知识要点

PHP数组是数据管理的基础工具,以下核心点值得记住:

  • 数组用一个变量存多个值,通过键值对来组织和访问数据,避免变量泛滥。

  • 索引数组用整数做键,从0开始自动编号,适合有序列表。

  • 关联数组用字符串做键,给每条数据加上有含义的标签,适合结构化信息。

  • 多维数组是数组嵌套数组,适合表达有层级关系的数据,比如表格、分类树。

  • 访问数组元素用方括号,索引数组$arr[0],关联数组$arr['key'],多维$arr['key1']['key2']

  • 数组大小动态增长,不需要预定义容量,添加新元素时自动扩展。

主观建议: 数组概念本身不难,但用法很广。初学时建议多在代码里刻意用数组替代零散变量,培养“相关数据应该组织在一起”的思维。同时注意键名的命名——关联数组的键名应该能让读代码的人一眼看懂这个值是干什么的。好的键名本身就是文档。后续学习foreach遍历、数组排序函数、数组增删操作时,这三种数组类型的基础认知会一直用得上。

← PHP递归函数:让函数调用自己来解决问题的编程技巧 PHP索引数组:用数字下标管理有序数据列表 →
分享笔记 (共有 篇笔记)
验证码:
微信公众号