在PHP中向空数组添加元素并保持连续数字索引(从0开始)非常简单,PHP会自动处理索引分配。以下是详细方法和最佳实践:
核心方法:使用 [] 语法(推荐)
$array = []; // 空数组
$array[] = 'Apple'; // 自动分配索引0
$array[] = 'Banana'; // 自动分配索引1
$array[] = 'Cherry'; // 自动分配索引2
// 结果:['Apple', 'Banana', 'Cherry']其他等价方法(不推荐)
// 方法1:array_push()
array_push($array, 'Apple'); // 索引0
array_push($array, 'Banana'); // 索引1
// 方法2:指定数字索引(冗余写法)
$array[0] = 'Apple';
$array[1] = 'Banana';关键特性说明:
- 自动索引分配
使用$array[] = $value语法时,PHP会自动分配下一个可用整数索引:
- 空数组从索引0开始
- 后续索引依次递增(0,1,2,…)
- 索引连续性保证
只要不手动指定非连续索引或删除中间元素,数组会始终保持连续索引:
$arr = [];
$arr[] = 'A'; // 0
$arr[] = 'B'; // 1
$arr[] = 'C'; // 2
// 结果:['A','B','C'] 索引0/1/2特殊情况处理:
场景1:删除元素后的索引处理
$arr = ['A','B','C'];
unset($arr[1]); // 删除索引1
$arr[] = 'D'; // 分配索引3(不是1!)
// 结果:['A', 2=>'C', 3=>'D'] 索引不连续解决方案:重建索引
$arr = array_values($arr); // 重建为连续索引 [0=>'A',1=>'C',2=>'D']场景2:混合索引数组
$arr = [];
$arr['name'] = 'Apple'; // 字符串索引
$arr[] = 'Red'; // 数字索引0
// 结果:['name'=>'Apple', 0=>'Red'] 性能优化建议:
- 始终使用
$array[] = $value
比array_push()快约2倍(避免函数调用开销)
// ✅ 推荐
$array[] = $value;
// ❌ 避免(性能差)
array_push($array, $value);- 超大数组预分配(10万+元素)
使用array_fill()预分配内存可提升性能:
// 预分配100,000个元素(PHP 5.6+)
$array = array_fill(0, 100000, null);
// 填充数据
for ($i = 0; $i < 100000; $i++) {
$array[$i] = $i * 2;
}最佳实践总结:
| 操作 | 推荐写法 | 是否保持连续索引 |
|---|---|---|
| 添加单个元素 | $array[] = $value | ✅ |
| 添加多个元素 | 循环使用 [] | ✅ |
| 合并数组 | $new = array_merge($arr1, $arr2) | ✅ |
| 重建索引 | array_values($array) | ✅ |
| 删除元素后添加 | 先array_values()再添加 | ✅ |
黄金法则:
- 空数组添加元素时永远使用
[]语法- 避免在循环中混用
unset()和[]- 仅当需要修复索引时才用
array_values()

