PHP array_slice() 和 array_splice() 详解:数组切片与截取
- 2026年7月3日
- 198 次
文章目录
分页功能中需要从数组中截取一页的数据。array_slice()和 array_splice() 都能做到,但一个返回新数组,一个修改原数组。这篇文章把这两个函数的区别和使用场景理清楚。
array_slice()基本用法
array_slice(array, offset, length) - 从数组中取出一段,返回新数组,不修改原数组。
<?php
$items = ['A', 'B', 'C', 'D', 'E'];
// 取第2个到第4个元素(索引1开始,取3个)
$slice = array_slice($items, 1, 3);
print_r($slice); // ['B', 'C', 'D']
// 取前3个
print_r(array_slice($items, 0, 3)); // ['A', 'B', 'C']
// 取后2个(offset为负)
print_r(array_slice($items, -2)); // ['D', 'E']
?>
保留键名 vs 重置键名
<?php
$arr = [5 => 'a', 10 => 'b', 15 => 'c'];
// 保留键名
print_r(array_slice($arr, 0, 2, true));
// Array ( [5] => a [10] => b )
// 重置键名(默认)
print_r(array_slice($arr, 0, 2));
// Array ( [0] => a [1] => b )
?>
array_splice() 基本用法
<?php
$arr = [5 => 'a', 10 => 'b', 15 => 'c'];
// 保留键名
print_r(array_slice($arr, 0, 2, true));
// Array ( [5] => a [10] => b )
// 重置键名(默认)
print_r(array_slice($arr, 0, 2));
// Array ( [0] => a [1] => b )
?>
array_splice(array, offset, length, replacement) - 从数组中删除一段,可以替换,修改原数组。
<?php
$items = ['A', 'B', 'C', 'D', 'E'];
// 删除第2个到第3个元素
$removed = array_splice($items, 1, 2);
print_r($removed); // ['B', 'C']
print_r($items); // ['A', 'D', 'E']
// 替换
array_splice($items, 1, 1, ['X', 'Y']);
print_r($items); // ['A', 'X', 'Y', 'D', 'E']
?>
array_slice() vs array_splice() 对比
特性array_slice()array_splice()
原数组不修改修改
返回值返回截取的新数组返回被删除的元素
替换不支持支持 replacement 参数
分页✅ 首选不推荐
删除元素不推荐✅ 首选
实战场景
场景1:分页截取
<?php
$all_posts = get_all_posts(); // 假设返回1000条
$page = 2;
$per_page = 10;
$start = ($page - 1) * $per_page;
$posts = array_slice($all_posts, $start, $per_page);
?>
场景2:删除数组最后一个元素
<?php
$values = [1, 2, 3, 4, 5];
array_splice($values, -1); // 删除最后一个
echo implode(', ', $values); // 1, 2, 3, 4
?>
场景3:替换数组头部
<?php
$tags = ['old1', 'old2', 'new1', 'new2'];
array_splice($tags, 0, 2, ['replaced']);
print_r($tags); // ['replaced', 'new1', 'new2']
?>
<?php
$all_posts = get_all_posts(); // 假设返回1000条
$page = 2;
$per_page = 10;
$start = ($page - 1) * $per_page;
$posts = array_slice($all_posts, $start, $per_page);
?>
<?php
$values = [1, 2, 3, 4, 5];
array_splice($values, -1); // 删除最后一个
echo implode(', ', $values); // 1, 2, 3, 4
?>
场景3:替换数组头部
<?php
$tags = ['old1', 'old2', 'new1', 'new2'];
array_splice($tags, 0, 2, ['replaced']);
print_r($tags); // ['replaced', 'new1', 'new2']
?>
<?php
$tags = ['old1', 'old2', 'new1', 'new2'];
array_splice($tags, 0, 2, ['replaced']);
print_r($tags); // ['replaced', 'new1', 'new2']
?>
若非作者标注皆为李涛自留地原创文章,转载或复制请以超链接形式并注明出处。
- Html表单是什么?Html表单的用法解析 2022-06-23
- 宝塔面板下WordPress网站搬家过程记载 2024-12-06
- PHP数组去重函数array_unique()怎么用 PHP数组去重函数使用实例 2022-11-14
- PHP中if判断语句的各种方式 PHP中if判断语句如何嵌套 2022-06-23
- PHP cURL 实战教程:从入门到 REST API 调用 2026-06-30
- PHP数据类型转换:字符串数据类型强制转换为整数数据类型 2022-06-10
