智享教程网
白蓝主题五 · 清爽阅读
首页  > 日常经验

PHP数组索引的那些实用技巧

做网站开发这些年,处理数据最频繁的操作就是和数组打交道。尤其是PHP里的数组索引,看似简单,但用好了能省不少事。

什么是数组索引

在PHP中,数组分两种:一种是索引数组,另一种是关联数组。索引数组的键是数字,从0开始自动分配。比如你从数据库查出一组用户信息,没特别指定键名时,默认就是索引数组。

$users = array('张三', '李四', '王五');
echo $users[0]; // 输出:张三

这里的 $users[0] 就是通过索引访问第一个元素。这种结构适合顺序存储、批量处理,像循环输出列表就很方便。

手动指定数字索引也是可以的

有时候为了对齐逻辑,我会手动设置数字键,虽然不常见,但在某些场景下挺有用。

$scores = array();
$scores[1] = 85;
$scores[2] = 92;
$scores[4] = 78;

foreach ($scores as $index => $score) {
echo "第{$index}名得分:{$score}\n";
}

注意这里跳过了3,PHP不会报错,只是中间留空。遍历时只会输出存在的索引,这点要心里有数。

删除元素后索引不会自动重排

有个坑不少人踩过:用 unset() 删掉某个元素后,后面的索引不会往前补。

unset($users[1]); // 删除李四
print_r(array_values($users)); // 想要连续索引?得手动调用 array_values()

如果之后要做 for 循环按数字索引取值,漏了这步就会出问题。所以删完记得用 array_values() 重建索引。

for循环遍历只适合纯索引数组

当你确定数组是连续数字索引时,用 for 比 foreach 稍微快一点,特别是数据量大时。

$count = count($users);
for ($i = 0; $i < $count; $i++) {
echo "用户:" . $users[$i] . "\n";
}

但如果数组中间有断层,或者你不确定是否连续,还是老实用 foreach 更安全。

混合索引和关联的情况也常见

实际项目里,数组经常既是数字键又是字符串键混着来。比如接口返回的数据结构:

$data = array(
0 => '状态正常',
'msg' => '操作成功',
1 => '附加信息'
);

这时候遍历推荐用 foreach,既能处理数字索引又能处理字符串键,省心。

平时写代码别太依赖索引的连续性,多考虑数据变化后的兼容性,少些 bug,上线也安心些。