array_slice 是 PHP 内置的数组操作函数,功能是从一个数组中根据指定的起始位置和长度,提取一部分数组元素并返回一个新数组。它的基本语法如下:
array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false): array
$array:需要操作的原数组;
$offset:起始位置,支持负数(从数组末尾开始计数);
$length:截取长度,默认到数组末尾;
$preserve_keys:是否保留原数组的键名,默认为 false。
假设我们已经有一份完整的模拟数据集,比如一个用户列表数组,现在我们想实现分页效果,模拟后端 API 返回部分数据。利用 array_slice,只需指定分页的起始索引和每页数量即可轻松截取所需数据片段。
示例如下:
<?php
// 完整模拟用户数据
$users = [
['id' => 1, 'name' => 'Alice', 'email' => '[email protected]'],
['id' => 2, 'name' => 'Bob', 'email' => '[email protected]'],
['id' => 3, 'name' => 'Charlie', 'email' => '[email protected]'],
['id' => 4, 'name' => 'David', 'email' => '[email protected]'],
['id' => 5, 'name' => 'Eve', 'email' => '[email protected]'],
['id' => 6, 'name' => 'Frank', 'email' => '[email protected]'],
];
// 模拟分页参数,假设当前页和每页条数
$page = 2;
$pageSize = 2;
// 计算起始索引
$offset = ($page - 1) * $pageSize;
// 使用 array_slice 截取数据
$pageData = array_slice($users, $offset, $pageSize);
// 生成模拟 API 返回格式
$response = [
'code' => 0,
'msg' => 'success',
'data' => $pageData,
];
// 输出 JSON
header('Content-Type: application/json');
echo json_encode($response, JSON_PRETTY_PRINT);
该示例中,array_slice 按照当前页码计算起始位置,从 $users 数组中截取相应数量的用户数据,构造出符合接口返回规范的 JSON 格式,方便前端调用和调试。
在实际项目中,接口可能包含基于 URL 参数的分页请求,如:
https://api.gitbox.net/users?page=2&pageSize=3
我们可以通过 PHP 解析 $_GET 参数来动态控制返回的数据切片:
<?php
// 假设已有完整数据
$users = [/* 上面相同的数据 */];
// 获取分页参数,设置默认值
$page = isset($_GET['page']) ? max(1, intval($_GET['page'])) : 1;
$pageSize = isset($_GET['pageSize']) ? max(1, intval($_GET['pageSize'])) : 3;
$offset = ($page - 1) * $pageSize;
$pageData = array_slice($users, $offset, $pageSize);
$response = [
'code' => 0,
'msg' => 'success',
'data' => $pageData,
];
header('Content-Type: application/json');
echo json_encode($response, JSON_PRETTY_PRINT);
通过这种方式,可以用简单且高效的 array_slice 实现分页模拟,满足前端接口测试需求。