
本文介绍如何使用 array_values() 函数快速、安全地将任意关联数组的键重置为从 0 开始的连续整数索引,保留原值顺序,适用于数据标准化、JSON 输出或后续遍历等场景。
本文介绍如何使用 array_values() 函数快速、安全地将任意关联数组的键重置为从 0 开始的连续整数索引,保留原值顺序,适用于数据标准化、json 输出或后续遍历等场景。
在 PHP 中,当处理关联数组(即键名非数字、无序或语义化)时,常需将其转换为标准的索引数组——即键名变为 0, 1, 2, ..., n-1,而值的相对顺序保持不变。这在生成 JSON 响应、传递给 JavaScript 处理、配合 for 循环或 foreach 需要明确下标等场景中尤为常见。
最简洁、高效且符合 PHP 最佳实践的方式是使用内置函数 array_values()。该函数会忽略原始键名,仅提取数组中所有值,并以自然顺序(即原数组遍历顺序)重新赋予数字索引,从 0 开始递增。
以下为完整示例:
<?php $original = [
'Cpu' => 'Cpu',
'Memory' => 'Memory',
'Ping' => 'Ping',
'Interface - Ethernet' => 'Interface - Ethernet',
'Disk - C:' => 'Disk - C:',
'Disk Reponse - C' => 'Disk Reponse - C',
'Top Memory' => 'Top Memory',
'Top Cpu' => 'Top Cpu',
'Process - DFSR' => 'Process - DFSR',
'Process - DNS' => 'Process - DNS',
'Process - IsmServ' => 'Process - IsmServ',
'Process - lsass' => 'Process - lsass',
'Process - svchost' => 'Process - svchost',
'Process' => 'Process',
'Interface' => 'Interface',
'Disk' => 'Disk',
'Disk Reponse' => 'Disk Reponse',
'Link-Discovery' => 'Link-Discovery',
'Microsoft Hyper-V Network Adapter #2' => 'Microsoft Hyper-V Network Adapter #2',
'Mellanox ConnectX-4 Lx Virtual Ethernet Adapter' => 'Mellanox ConnectX-4 Lx Virtual Ethernet Adapter'
];
// ✅ 正确做法:重置键名为连续数字索引
$indexed = array_values($original);
print_r($indexed);
// 输出:
// Array
// (
// [0] => Cpu
// [1] => Memory
// [2] => Ping
// [3] => Interface - Ethernet
// ...
// )
?>
⚠️ 注意事项:
-
array_values()不会修改原数组,而是返回一个新数组。若需就地更新,请显式赋值:$original = array_values($original); - 该函数严格按 PHP 数组的内部遍历顺序保留值的先后关系,因此结果可预测、可复现;
- 不适用于需保留键名语义的场景(如配置映射、字段标识),此时应考虑其他策略(如同时导出键与值);
- 若数组为空,
array_values([])返回空索引数组[],行为安全无异常。
总结:array_values() 是解决“键名数字重编号”问题的标准、轻量且无副作用的方案。无需手动循环、无需 array_keys() 配合 array_combine(),一行代码即可完成转换,推荐作为首选方法。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











