array_slice()

1. 定义

该函数从指定位置取出数组中一段连续的指定长度的元素,返回被取出的元素数组。

2. 语法

array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] ) : array

3. 参数说明

参数 可选性 数据类型 描述
$array 必需 数组 待被取出数组元素的数组
$offset 必需 整型 开始取出元素的位置索引
$length 可选 整型 该值为正数时,表示取出元素的个数。默认为NULL,意为从$offset开始到最后
$preserve_keys 可选 布尔值 是否使用原数组的索引,默认为false,表示会重新排序并重置返回的数组的数字索引

其中,$offset如果为负数时,将从原数组的倒数第$offset个元素开始取。 另外,当$length为负数时,该函数将从$offset索引开始,到原数组的倒数第$length个元素结束。 最后,如果$offset大于原数组的长度时,将返回一个空数组。

4. 示例

<?php

// array_slice()
// 从指定位置取出数组中一段连续的指定长度的元素,返回被取出的元素数组

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

// 获取从第三个元素开始到末端的所有元素
$offset = 2;
$res = array_slice($arr, $offset);
var_dump($res);
/* 输出:
array(6) {
  [0]=>
  int(2)
  [1]=>
  int(3)
  [2]=>
  int(4)
  [3]=>
  array(3) {
    [0]=>
    string(1) "a"
    [1]=>
    string(1) "b"
    [2]=>
    string(1) "c"
  }
  [4]=>
  array(3) {
    [0]=>
    string(1) "X"
    [1]=>
    string(1) "Y"
    [2]=>
    string(1) "Z"
  }
  [5]=>
  string(21) "极速数据棒棒哒"
}
*/

// 获取从倒数第二个元素开始到末端的所有元素
$offset = -2;
$res = array_slice($arr, $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 = 2;
$length = 4;
$res = array_slice($arr, $offset, $length);
var_dump($res);
/* 输出:
array(4) {
  [0]=>
  int(2)
  [1]=>
  int(3)
  [2]=>
  int(4)
  [3]=>
  array(3) {
    [0]=>
    string(1) "a"
    [1]=>
    string(1) "b"
    [2]=>
    string(1) "c"
  }
}
*/

// 获取从第三个元素开始、到倒数第四个元素(不包含该元素)结束这一段
$offset = 2;
$length = -4;
$res = array_slice($arr, $offset, $length);
var_dump($res);
/* 输出:
array(2) {
  [0]=>
  int(2)
  [1]=>
  int(3)
}
*/

// 获取从倒数第七个元素开始、到倒数第四个元素(不包含该元素)结束这一段
$offset = -7;
$length = -4;
$res = array_slice($arr, $offset, $length);
var_dump($res);
/* 输出:
array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
*/

5. 延展阅读

  • array_splice():移除指定位置指定长度的数组元素(第四个参数存在时将在指定位置插入,且新插入的元素索引不被保留),返回被移除的元素
  • array_chunk():将指定数组分割成多个等元素个数的数组(最后一个子数组的元素个数可能少于指定的数目)