array_splice()可移除数组元素并重置数字索引,通过offset和length参数指定起始位置和数量,支持负数从末尾操作,会修改原数组并返回被删除元素。

基本语法
array_splice(array &$input, int $offset, int|null $length = null, mixed $replacement = [])
其中用于移除元素的关键参数是:- $input:要操作的原数组(传引用)
- $offset:开始移除的位置(从0开始)
- $length:要移除的元素个数
移除指定位置的元素
如果想从第2个元素开始移除2个元素:
$arr = ['a', 'b', 'c', 'd', 'e']; array_splice($arr, 1, 2); // 结果:$arr 变为 ['a', 'd', 'e']
从末尾移除元素
使用负数 offset 可以从数组末尾开始计算位置:
$arr = ['a', 'b', 'c', 'd', 'e']; array_splice($arr, -2, 2); // 移除最后两个元素,结果:['a', 'b', 'c']
移除但保留索引?注意!
array_splice() 会**重置数组的数字索引**,这是它与 unset() 的主要区别之一。例如:
立即学习“PHP免费学习笔记(深入)”;
$arr = [10, 20, 30, 40]; array_splice($arr, 1, 1); // 结果是 [10, 30, 40],索引为 0,1,2(不是 0,2,3)如果你需要保持原有键名(尤其是关联数组),建议使用 unset() 或结合 array_diff() 处理。
小技巧:只移除不替换
由于第四个参数 $replacement 默认为空数组,所以移除时无需传入任何值,直接忽略即可:
// 移除前两个元素 array_splice($arr, 0, 2);基本上就这些。掌握 offset 和 length 的用法,就能灵活控制要移除的元素范围。注意它改变的是原数组,并返回被删除的元素。










