← PHP数组入门:用键值对结构高效管理数据集合 PHP关联数组:用有意义的键名替代数字索引 →

PHP索引数组:用数字下标管理有序数据列表

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

在PHP的三种数组类型里,索引数组是结构简单的一种。它的键名是PHP自动分配的数字,从0开始依次递增。你不需要给每个元素起名字,只需要按顺序把值放进数组,PHP会用索引编号把它们组织好。

索引数组也叫数字数组,每个元素的位置由索引数字决定。这个结构适合存储那种“顺序有意义”的数据列表——比如排名、步骤流程、时间序列等。数组内部可以存放整数、浮点数、字符串,甚至对象,类型上比较自由。

两种创建索引数组的方式

PHP提供了两种创建索引数组的途径,选用哪种取决于你是在初始化时就知道所有元素,还是想在运行过程中逐步填充。

方式一:用array()函数或短数组语法一次性声明

// 传统array()函数
$sizeCategory = array("大号", "中号", "小号");

// PHP 5.4+支持短数组语法
$sizeCategory = ["大号", "中号", "小号"];

array()内部按顺序列出元素,PHP自动给第一个元素分配索引0,第二个分配索引1,以此类推。短数组语法[]是后来引入的,写起来更简洁,功能一样。两者在性能和表现上没有差别。

方式二:手动给每个索引赋值

$sizeCategory[0] = "大号";
$sizeCategory[1] = "中号";
$sizeCategory[2] = "小号";

这种方式适合数组创建时不方便一次把所有值都列出来的场景,比如先声明数组,然后在循环或条件里逐步赋值。

索引数组的基本操作实例

实例1:通过索引直接访问元素

<?php
$courseList = array("PHP入门", "面向对象", "数据库操作", "安全防护");

echo "第一门课程:{$courseList[0]}<br/>";
echo "第三门课程:{$courseList[2]}<br/>";
echo "之后一门课程:{$courseList[3]}<br/>";
?>

输出:

第一门课程:PHP入门
第三门课程:数据库操作
之后一门课程:安全防护

通过$数组名[索引]取出指定位置的元素。这里要留意数组下标从0开始,第一个元素是[0],第四个是[3]。初学者容易在这个地方按直觉用1当第一个索引,结果取到的是第二个元素。

实例2:手动索引赋值并输出

<?php
$level[0] = "初级";
$level[1] = "中级";
$level[2] = "高级";

echo "用户级别分为:{$level[0]}、{$level[1]}、{$level[2]}";
?>

输出:用户级别分为:初级、中级、高级

array()一次性声明效果相同,只是分步完成。

遍历索引数组的两种方式

foreach遍历——不用管索引,直接拿值

foreach是遍历索引数组直接的方式。它自动把每个元素的值取出来,你不需要手动操作索引计数器。

<?php
$langList = ["C++", "Java", "Python", "Go"];

foreach ($langList as $item) {
    echo "编程语言:{$item}<br/>";
}
?>

输出:

编程语言:C++
编程语言:Java
编程语言:Python
编程语言:Go

foreach屏蔽了索引的存在,让你专注于“对每个元素做什么”。对于索引数组的遍历场景,我个人习惯优先用foreach——少一个索引变量,少一类越界bug的可能性。

for遍历——需要索引位置时使用

当你不仅需要元素的值,还需要知道它在数组里排第几(比如要给列表编号),for循环配合count()是更合适的选择。

<?php
$bookList = ["PHP实战", "MySQL入门", "JavaScript高级编程", "Linux运维"];

$total = count($bookList);
for ($i = 0; $i < $total; $i++) {
    $order = $i + 1; // 显示序号从1开始
    echo "第{$order}本书:《{$bookList[$i]}》<br/>";
}
?>

输出:

第1本书:《PHP实战》
第2本书:《MySQL入门》
第3本书:《JavaScript高级编程》
第4本书:《Linux运维》

for循环里$i从0跑到3,count($bookList)返回4,条件$i < 4保证不越界。需要序号的地方,用$i + 1转成人读的从1开始。

动态添加和删除数组元素

索引数组创建之后,仍然可以灵活增减元素。

追加元素:用[]语法

<?php
$fruitList = ["苹果", "香蕉"];
// 用$数组名[]依次追加新元素
$fruitList[] = "芒果";
$fruitList[] = "木瓜";

foreach ($fruitList as $fruit) {
    echo "水果:{$fruit}<br/>";
}
?>

输出:

水果:苹果
水果:香蕉
水果:芒果
水果:木瓜

$数组名[] = 值会把新值追加到数组末尾,索引自动递增。这是往索引数组里加元素常用的方式,不需要手动算当前有几个元素再指定索引。

查看数组长度:count()

<?php
$teamList = ["产品组", "前端组", "后端组", "测试组"];
echo "当前团队数量:" . count($teamList) . " 个";
?>

输出:当前团队数量:4 个

count()返回数组里元素的个数。在for循环里和边界判断时经常用到它。

索引数组与遍历方式的选择

本节课程知识要点里必须强调一点:索引数组用for还是foreach,取决于你是否需要用到索引数字本身。

需求 推荐方式
只关心元素值,不关心位置 foreach
需要显示序号(第1个、第2个...) for
需要根据索引做跳跃或倒序遍历 for
数组索引不连续(如0, 2, 5这样) foreach更安全

for循环默认索引从0开始连续递增,如果数组的索引被手动打乱了——比如删掉了中间某个元素,后面的索引不会自动重新排——for$i++逻辑可能踩空或越界。foreach不管索引怎么乱,都会老老实实遍历所有存在的元素。

主观建议: 在日常开发里,如果不确定索引是否连续,或者数组可能在运行中被unset()过某些元素,用foreach是更不容易出错的选择。只有当你确信索引是从0开始的连续整数,而且你需要用到位置信息时,才用for。这个习惯能让索引相关的bug少出现。

索引数组的适用场景和局限

索引数组适合存那种“一串同类型的东西”——比如一堆用户名、一组数字、一个操作步骤序列。在这些场景里,元素的顺序有意义,但每个元素本身不需要额外的标签来描述。

如果数据里每个元素都有明确的属性(比如“姓名+年龄+城市”),索引数组就不够用了——你得记住索引0是姓名还是年龄。这种情况就该换关联数组,用语义化的键名替代数字索引。

个人经验分享: 在代码号学习编程的前期,索引数组和关联数组的选择经常被忽略,很多人凭习惯全用索引数组。结果一两个月后回来看自己的代码,面对$data[2]想不起来这个2代表什么。关联数组的键名本质上是一份内嵌的文档,能帮未来的自己(或同事)快速理解数据结构。所以遇到“这列值分别代表什么”这种问题时,关联数组是更合适的容器。

PHP索引数组结构简单但用途广泛,是处理数据列表的基础工具。掌握array()[]两种声明方式、foreachfor两种遍历模式、以及用$arr[]动态追加和用count()查长度的基本操作,就能覆盖日常开发中大部分“存列表、取列表、遍历列表”的需求。索引数组虽基础,但它是理解更复杂的关联数组和多为数组的前提。

← PHP数组入门:用键值对结构高效管理数据集合 PHP关联数组:用有意义的键名替代数字索引 →
分享笔记 (共有 篇笔记)
验证码:
微信公众号