在php开发中,数组操作是非常基础且高频的需求,删除数组第一个元素的场景在实际项目中十分常见,比如处理队列数据、过滤无效头部元素等。不同的实现方式有着不同的特性,需要根据具体场景选择。

使用内置函数array_shift删除首元素
array_shift是php官方提供的专门用于删除数组第一个元素的内置函数,使用起来非常简单,会直接修改原数组,并返回被删除的元素。
示例代码如下:
<?php // 定义测试数组 $testArr = [1, 2, 3, 4, 5]; echo "删除前的数组:"; print_r($testArr); // 使用array_shift删除第一个元素 $deletedElement = array_shift($testArr); echo "被删除的元素是:" . $deletedElement . "<br/>"; echo "删除后的数组:"; print_r($testArr); ?>
该方法的优点是操作简单,语义明确,内置函数经过优化性能较好。缺点是会直接修改原数组,如果需要保留原数组的话需要提前拷贝。
使用array_slice获取剩余元素
array_slice函数可以截取数组的指定部分,我们可以通过截取从索引1开始到末尾的所有元素,得到删除首元素后的新数组,这种方法不会修改原数组。
示例代码如下:
<?php // 定义测试数组 $testArr = ['a', 'b', 'c', 'd']; echo "原数组:"; print_r($testArr); // 截取从索引1开始的所有元素,得到删除首元素后的数组 $newArr = array_slice($testArr, 1); echo "删除首元素后的新数组:"; print_r($newArr); echo "原数组未被修改:"; print_r($testArr); ?>
该方法的优点是不会修改原数组,适合需要保留原始数据的场景。缺点是需要额外创建新数组,会占用更多内存,对于大数组来说性能不如array_shift。
通过数组反转再删除末尾元素实现
我们还可以通过先反转数组,删除最后一个元素,再反转回来的方式实现删除首元素的效果,这种方式同样不会修改原数组。
示例代码如下:
<?php // 定义测试数组 $testArr = ['apple', 'banana', 'cherry', 'date']; echo "原数组:"; print_r($testArr); // 反转数组 $reversedArr = array_reverse($testArr); // 删除反转后的最后一个元素(即原数组的第一个元素) array_pop($reversedArr); // 再次反转得到结果 $resultArr = array_reverse($reversedArr); echo "删除首元素后的数组:"; print_r($resultArr); ?>
这种方法的逻辑相对复杂,需要两次反转操作,性能较差,一般只作为思路拓展,实际开发中不建议使用。
不同方法对比
我们可以通过下表直观对比几种方法的特性:
| 方法 | 是否修改原数组 | 性能 | 适用场景 |
|---|---|---|---|
| array_shift | 是 | 高 | 允许修改原数组,追求性能的场景 |
| array_slice | 否 | 中 | 需要保留原数组的场景 |
| 反转+array_pop | 否 | 低 | 仅作为思路拓展,无实际推荐使用场景 |
总结
php中删除数组第一个元素最推荐的方式是使用array_shift函数,它在性能和易用性上都表现优异,适合大多数场景。如果需要保留原数组不被修改,可以选择array_slice方法。开发者可以根据实际业务需求选择最合适的实现方式,提升代码的合理性和执行效率。
php删除数组首元素array_shiftarray_slicearray_reverse修改时间:2026-07-04 19:21:11