ZetCode

PHP array_slice 函数

最后修改于 2025 年 3 月 13 日

PHP 的 array_slice 函数用于提取数组的一个切片。它在不修改原始数组的情况下获取数组的一部分非常有用。

基本定义

array_slice 函数返回数组中的选定部分。它可以从任何位置以指定的长度提取元素。

语法:array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false): array。负偏移量从数组末尾开始计数。

基本的 array_slice 示例

这演示了如何从位置 2 开始提取数组的一个简单切片。

basic_array_slice.php
<?php

$fruits = ['apple', 'banana', 'cherry', 'date', 'elderberry'];
$slice = array_slice($fruits, 2);

print_r($slice);

这会提取从索引 2 开始到末尾的所有元素。输出将是 ['cherry', 'date', 'elderberry']。原始数组保持不变。

指定长度参数

此示例演示了如何同时指定偏移量和长度参数。

length_parameter.php
<?php

$numbers = [1, 2, 3, 4, 5, 6, 7, 8];
$slice = array_slice($numbers, 3, 3);

print_r($slice);

这会提取从索引 3 开始的 3 个元素。输出将是 [4, 5, 6]。长度参数限制了切片中包含的元素数量。

负数偏移量

使用负偏移量从数组末尾开始切片。

negative_offset.php
<?php

$letters = ['a', 'b', 'c', 'd', 'e', 'f'];
$slice = array_slice($letters, -3, 2);

print_r($slice);

这会从末尾算起 3 个元素,并获取 2 个元素。输出将是 ['d', 'e']。当您知道从末尾开始的位置时,负偏移量很有用。

保留键

preserve_keys 参数在切片中维护原始数组键。

preserve_keys.php
<?php

$assoc = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4];
$slice = array_slice($assoc, 1, 2, true);

print_r($slice);

这会在切片中保留原始键 'b' 和 'c'。输出将是 ['b' => 2, 'c' => 3]。如果不设置为 true,键将从 0 开始重新索引。

组合参数

此示例组合了负偏移量和长度以及键保留。

combined_parameters.php
<?php

$data = [10, 20, 30, 40, 50, 60];
$slice = array_slice($data, -4, 3, true);

print_r($slice);

这会从末尾算起 4 个元素,获取 3 个元素,并保留键。输出将是 [2 => 30, 3 => 40, 4 => 50],并带有原始索引。

最佳实践

来源

PHP array_slice 文档

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

作者

我叫 Jan Bodnar,是一位充满激情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在编程教学方面拥有超过十年的经验。

列出 所有 PHP 数组函数