array_splice()

1. 定义

该函数移除指定位置指定长度的数组元素(第四个参数存在时将在指定位置插入,且新插入的元素索引不被保留),返回被移除的元素。

注:

  • 该函数先移除元素,后插入元素
  • 移除(与插入)完成后,会对数组中存在的数字索引重新排序

2. 语法

array_splice ( array &$input , int $offset [, int $length = count($input) [, mixed $replacement = array() ]] ) : array

3. 参数说明

参数 可选性 数据类型 描述
$input 必需 数组 将被移除数组元素的数组
$offset 必需 整型 开始移除元素的位置索引
$length 可选 整型 该值为正数时,表示取出元素的个数。默认为原数组的长度count($input),意为从$offset开始到最后
$replacement 可选 mixed 移除元素后新插入(替换)的元素或元素数组

其中,$offset如果为负数时,将从原数组的倒数第$offset个元素开始取。

另外,当$length为负数时,该函数将从$offset索引开始,到原数组的倒数第$length个元素结束。

4. 示例

<?php

// array_splice()
// 移除指定位置指定长度的数组元素(第四个参数存在时将在指定位置插入,且新插入的元素被重新添加数字索引),返回被移除的元素

$input = ['被迫营业的一天', 1, 2, 3, 4, ['a', 'b', 'c'], ['X', 'Y', 'Z'], '极速数据棒棒哒'];

// 移除第二个到数组末尾的这些元素
$offset = 1;
$res = array_splice($input, $offset);
var_dump($res);
/* 
array(7) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
  [4]=>
  array(3) {
    [0]=>
    string(1) "a"
    [1]=>
    string(1) "b"
    [2]=>
    string(1) "c"
  }
  [5]=>
  array(3) {
    [0]=>
    string(1) "X"
    [1]=>
    string(1) "Y"
    [2]=>
    string(1) "Z"
  }
  [6]=>
  string(21) "极速数据棒棒哒"
}
*/
// var_dump($input);// 被移除了元素后的原数组

// 移除倒数第二个到数组末尾的这些元素
$offset = -2;
$res = array_splice($input, $offset);
var_dump($res);
/* 
array(2) {
  [0]=>
  array(3) {
    [0]=>
    string(1) "X"
    [1]=>
    string(1) "Y"
    [2]=>
    string(1) "Z"
  }
  [1]=>
  string(21) "极速数据棒棒哒"
}
*/

// 移除从第二个元素开始的连续四个元素
$offset = 1;
$length = 4;
$res = array_splice($input, $offset, $length);
var_dump($res);
/* 
array(4) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
}
*/

// 移除从第二个元素到倒数第四个元素(不包括该元素)之间的元素
$offset = 1;
$length = -4;
$res = array_splice($input, $offset, $length);
var_dump($res);
/* 
array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
*/

// 移除从第二个元素到倒数第四个元素(不包括该元素)之间的元素
$input = ['被迫营业的一天', 1, 2, 3, 4, ['a', 'b', 'c'], 'char'=>['X', 'Y', 'Z'], '极速数据棒棒哒'];
$offset = 1;
$length = 4;
$replacement = ['a'=>'替换元素1', 2=>'替换元素2', 3=>'替换元素3', 'd'=>'替换元素4', 'ex'=>'替换元素5'];
$res = array_splice($input, $offset, $length, $replacement);
var_dump($res);
/* 
array(4) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
}
*/
var_dump($input);// 移除元素再插入元素后的数组
/* 
array(9) {
  [0]=>
  string(21) "被迫营业的一天"
  [1]=>
  string(13) "替换元素1"
  [2]=>
  string(13) "替换元素2"
  [3]=>
  string(13) "替换元素3"
  [4]=>
  string(13) "替换元素4"
  [5]=>
  string(13) "替换元素5"
  [6]=>
  array(3) {
    [0]=>
    string(1) "a"
    [1]=>
    string(1) "b"
    [2]=>
    string(1) "c"
  }
  ["char"]=>
  array(3) {
    [0]=>
    string(1) "X"
    [1]=>
    string(1) "Y"
    [2]=>
    string(1) "Z"
  }
  [7]=>
  string(21) "极速数据棒棒哒"
}
*/

5. 延展阅读

  • array_slice():从指定位置取出数组中一段连续的指定长度的元素,返回被取出的元素数组
  • array_merge():合并一个或多个数组,返回合并后的数组