用array_values()可重置数字索引为连续整数,unset仅删除元素而不重排键;array_splice()则删除元素并自动重排索引;array_values()对关联键无效且会丢弃原字符串键。

直接用 array_values() 就行。它会提取数组所有值,丢掉原键名,生成从 0 开始、连续递增的数字索引。
为什么 unset 后索引不连续
unset 只是移除指定键值对,不碰其他键名。比如:
$arr = [0 => 'a', 1 => 'b', 2 => 'c'];<br> unset($arr[1]);
结果是
[0 => 'a', 2 => 'c'] —— 键 1 缺失,但 0 和 2 还在原位。用 array_values() 快速重建索引
在 unset 后加一句 $arr = array_values($arr); 即可:
- 原数组:[0=>'a', 2=>'c']
- 执行后:[0=>'a', 1=>'c']
替代方案:直接用 array_splice()
如果目标就是删元素+重排索引,array_splice 更一步到位:
- array_splice($arr, 1, 1); 删除索引 1 处的 1 个元素
- 自动重排数字键,无需额外调用 array_values()
注意关联数组的情况
array_values() 只影响数字索引,对关联键(如 'name'、'id')无影响;
若数组混用数字键和字符串键,它仍只重排值的顺序,生成新数字键,原关联键会被丢弃。











