# array_slice

(PHP 4, PHP 5, PHP 7)

array_slice — 从数组中取出一段

### 说明

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

array_slice() 返回根据 `offset` 和 `length` 参数所指定的 `array` 数组中的一段序列。

### 参数

`array`

  输入的数组。

`offset`

  如果 `offset` 非负，则序列将从 `array` 中的此偏移量开始。如果 `offset` 为负，则序列将从 `array` 中距离末端这么远的地方开始。

`length`

  如果给出了 `length` 并且为正，则序列中将具有这么多的单元。如果给出了 `length` 并且为负，则序列将终止在距离数组末端这么远的地方。如果省略，则序列将从 `offset` 开始一直到 `array` 的末端。

`preserve_keys`

  注意 array_slice() 默认会重新排序并重置数组的数字索引。你可以通过将 `preserve_keys` 设为 `TRUE` 来改变此行为。

### 返回值

返回其中一段。 如果 offset 参数大于 array 尺寸，就会返回空的 array。

### 更新日志

版本 | 说明
--- | ---
5.2.4 | `length` 参数默认值改成 NULL。 现在 `length` 为 NULL 时，意思是说使用 `array` 的长度。 之前的版本里， NULL 的 `length` 的意思是长度为零（啥也不返回）。
5.0.2 | 增加了可选参数 `preserve_keys` 。

### 范例

Example #1 array_slice() 例子

    <?php
    $input = array("a", "b", "c", "d", "e");

    $output = array_slice($input, 2);      // returns "c", "d", and "e"
    $output = array_slice($input, -2, 1);  // returns "d"
    $output = array_slice($input, 0, 3);   // returns "a", "b", and "c"

    // note the differences in the array keys
    print_r(array_slice($input, 2, -1));
    print_r(array_slice($input, 2, -1, true));
    ?>

以上例程会输出：

    Array
    (
        [0] => c
        [1] => d
    )
    Array
    (
        [2] => c
        [3] => d
    )

### 参见

- array_splice() - 去掉数组中的某一部分并用其它值取代
- unset() - 释放给定的变量
- array_chunk() - 将一个数组分割成多个