php中怎么截取数组中的函数

来源:苹果APP网作者:三上悠亚头衔:网络博主
导读:本期聚焦于小伙伴创作的《php中怎么截取数组中的函数》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《php中怎么截取数组中的函数》有用,将其分享出去将是对创作者最好的鼓励。

在PHP开发中,数组是最常用的数据结构之一,很多时候我们需要从完整的数组中提取出部分元素,也就是截取数组的操作。PHP内置了多个可用于数组截取的函数,不同函数的适用场景有所区别,下面来详细介绍相关的使用技巧。

php中怎么截取数组中的函数

一、array_slice函数:非破坏性截取数组

array_slice是PHP中最常用的数组截取函数,它的特点是不会修改原数组,而是返回截取后得到的新数组,适合只需要获取部分数组元素,不需要改变原数组的场景。

1. 函数基本语法

该函数的语法结构如下:

<?php
/**
 * @param array $array 需要截取的原始数组
 * @param int $offset 起始位置,正数表示从数组开头第offset位开始,负数表示从数组末尾倒数第offset位开始
 * @param int|null $length 截取的长度,可选参数,不填则截取到数组末尾;正数表示截取length个元素,负数表示截取到倒数第length位
 * @param bool $preserve_keys 是否保留原数组的键名,默认false会重置数字键名,true则保留原键名
 * @return array 截取后得到的新数组
 */
array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false): array
?>

2. 基础使用示例

下面是几个常见的使用场景示例:

<?php
$origin_arr = [0 => 'a', 1 => 'b', 2 => 'c', 3 => 'd', 4 => 'e', 5 => 'f'];

// 从索引1开始,截取2个元素,默认不保留原键名
$slice1 = array_slice($origin_arr, 1, 2);
print_r($slice1); 
// 输出:Array ( [0] => b [1] => c )

// 从倒数第3位开始,截取到数组末尾
$slice2 = array_slice($origin_arr, -3);
print_r($slice2);
// 输出:Array ( [0] => d [1] => e [2] => f )

// 保留原数组的键名
$slice3 = array_slice($origin_arr, 1, 2, true);
print_r($slice3);
// 输出:Array ( [1] => b [2] => c )

// 原数组不会被修改
print_r($origin_arr);
// 输出:Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f )
?>

二、array_splice函数:破坏性截取并替换数组

array_splice同样可以实现数组截取,但是它会直接修改原数组,并且支持在截取的位置插入新的元素,适合需要修改原数组的场景。

1. 函数基本语法

该函数的语法结构如下:

<?php
/**
 * @param array &$array 需要操作的原始数组,注意是引用传递,函数执行后会修改该数组
 * @param int $offset 起始位置,规则和array_slice一致
 * @param int|null $length 截取的长度,规则和array_slice一致,不填则截取到数组末尾
 * @param mixed $replacement 可选参数,用于在截取的位置插入的新元素,可以是单个值或者数组
 * @return array 被截取出来的元素组成的新数组
 */
array_splice(array &$array, int $offset, ?int $length = null, mixed $replacement = []): array
?>

2. 基础使用示例

下面是几个常见的使用场景示例:

<?php
$origin_arr = [0 => 'a', 1 => 'b', 2 => 'c', 3 => 'd', 4 => 'e', 5 => 'f'];

// 从索引1开始截取2个元素,不插入新元素,原数组会被修改
$slice1 = array_splice($origin_arr, 1, 2);
print_r($slice1); 
// 输出:Array ( [0] => b [1] => c )
print_r($origin_arr);
// 输出:Array ( [0] => a [1] => d [2] => e [3] => f )

// 重新初始化数组,从索引1开始截取2个元素,插入新元素
$origin_arr2 = [0 => 'a', 1 => 'b', 2 => 'c', 3 => 'd', 4 => 'e', 5 => 'f'];
$slice2 = array_splice($origin_arr2, 1, 2, ['x', 'y']);
print_r($slice2);
// 输出:Array ( [0] => b [1] => c )
print_r($origin_arr2);
// 输出:Array ( [0] => a [1] => x [2] => y [3] => d [4] => e [5] => f )
?>

三、两个函数的核心区别

为了更清晰地区分两个函数的使用场景,我们可以通过表格对比两者的核心差异:

对比项array_slicearray_splice
是否修改原数组否,返回新数组是,直接修改传入的数组
是否支持插入元素不支持支持,可通过第四个参数插入新元素
返回值截取得到的新数组被截取出来的元素组成的新数组
适用场景仅需获取部分数组元素,不修改原数组需要修改原数组,或者需要替换部分数组元素

四、实际开发场景示例

在实际开发中,我们可以根据需求选择合适的函数:

场景1:分页获取数组数据

比如有一个用户列表数组,需要按每页2条数据分页,获取第2页的数据:

<?php
$user_list = ['张三', '李四', '王五', '赵六', '钱七', '孙八'];
$page = 2; // 第2页
$page_size = 2; // 每页2条
// 计算起始偏移量:(页码-1)*每页数量
$offset = ($page - 1) * $page_size;
$page_data = array_slice($user_list, $offset, $page_size);
print_r($page_data);
// 输出:Array ( [0] => 王五 [1] => 赵六 )
?>

场景2:删除数组中的部分元素

比如需要删除数组中的第2到第3个元素:

<?php
$arr = [10, 20, 30, 40, 50];
// 从索引1开始,截取2个元素(即20和30),不插入新元素,相当于删除这两个元素
array_splice($arr, 1, 2);
print_r($arr);
// 输出:Array ( [0] => 10 [1] => 40 [2] => 50 )
?>

掌握这两个数组截取函数的用法和区别,就可以应对大部分PHP开发中的数组截取需求,根据实际场景选择合适的函数即可。

PHP数组截取array_slicearray_splice数组操作修改时间:2026-07-23 21:12:43

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。