ZetCode

PHP array_splice 函数

最后修改于 2025 年 3 月 13 日

PHP 的 array_splice 函数可以移除/替换数组元素,并可选择性地插入新元素。它是一个强大的数组修改工具。

基本定义

array_splice 从数组中移除元素,并用可选的新元素替换它们。它会修改原始数组,并返回被移除的元素。

语法:array_splice(array &$array, int $offset, ?int $length = null, mixed $replacement = []): array。该函数适用于数字键,并会对数组进行重新索引。

基本移除示例

这显示了如何从数组的某个位置开始移除元素。

basic_removal.php
<?php

$colors = ['red', 'green', 'blue', 'yellow'];
$removed = array_splice($colors, 1, 2);

print_r($colors);    
print_r($removed);   

这从索引 1 开始移除 2 个元素。原始数组会被修改,被移除的元素会被返回。注意重新索引。

插入元素

演示如何在不移除任何现有元素的情况下插入新元素。

insert_elements.php
<?php

$fruits = ['apple', 'banana', 'cherry'];
array_splice($fruits, 1, 0, ['orange', 'grape']);

print_r($fruits);

通过将长度设置为 0,我们在位置 1 插入新元素,而不移除任何现有元素。数组会增长以容纳新元素。

替换元素

展示如何在单个操作中用新元素替换现有元素。

replacement.php
<?php

$numbers = [1, 2, 3, 4, 5];
$removed = array_splice($numbers, 1, 3, ['two', 'three', 'four']);

print_r($numbers);  
print_r($removed);  

这会用新的字符串值替换从索引 1 开始的 3 个元素。该函数返回被替换的原始元素。

负数偏移量

演示使用负数偏移量,从数组末尾开始计数。

negative_offset.php
<?php

$letters = ['a', 'b', 'c', 'd', 'e'];
array_splice($letters, -2, 1);

print_r($letters);  

负数偏移量从末尾开始计数(-1 是最后一个元素)。这里我们从倒数第二个位置开始移除一个元素(移除了 'd')。

完全替换

展示如何用新元素替换整个数组内容。

complete_replacement.php
<?php

$original = ['old1', 'old2', 'old3'];
$removed = array_splice($original, 0, count($original), ['new1', 'new2']);

print_r($original);  
print_r($removed);   

通过指定整个数组长度,我们替换了所有元素。原始数组现在只包含我们提供的新元素。

最佳实践

来源

PHP array_splice 文档

本教程通过实际示例介绍了 PHP array_splice 函数,展示了其在数组修改场景中的用法。

作者

我叫 Jan Bodnar,是一位充满激情的程序员,拥有丰富的编程经验。我从 2007 年开始撰写编程文章。至今,我已撰写了 1400 多篇文章和 8 本电子书。我在教授编程方面拥有十多年的经验。

列出 所有 PHP 数组函数