array_slice 的基本用法如下:
array array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false)
$array:要操作的数组。
$offset:起始位置(可以为负数,负数表示从数组末尾开始算起)。
$length:截取的长度(可选)。
$preserve_keys:是否保留原数组的键名,默认为 false。
提取数组最后 N 个元素,关键在于使用负数的 $offset。如果我们希望提取最后 3 个元素,可以这么写:
$lastThree = array_slice($array, -3);
这里,-3 表示从数组末尾向前数 3 个位置开始截取,一直到数组末尾。
<?php
// 示例数组
$fruits = ["苹果", "香蕉", "橙子", "葡萄", "芒果", "菠萝"];
// 提取最后 3 个元素
$lastThreeFruits = array_slice($fruits, -3);
print_r($lastThreeFruits);
输出结果:
Array
(
[0] => 葡萄
[1] => 芒果
[2] => 菠萝
)
注意,默认情况下,array_slice 会重置数组的键名,从 0 开始。如果想保留原数组的键名,可以设置第四个参数为 true:
$lastThreeFruits = array_slice($fruits, -3, null, true);
print_r($lastThreeFruits);
输出:
Array
(
[3] => 葡萄
[4] => 芒果
[5] => 菠萝
)
假设你有一个日志数组,每次只想显示最新的 N 条日志,可以用 array_slice 轻松实现:
$logs = [
"2025-05-17 10:00: 用户登录",
"2025-05-17 10:05: 用户上传文件",
"2025-05-17 10:15: 用户退出",
"2025-05-17 10:20: 用户登录",
"2025-05-17 10:30: 用户修改设置",
];
// 显示最近 2 条日志
$recentLogs = array_slice($logs, -2);
foreach ($recentLogs as $log) {
echo $log . PHP_EOL;
}
输出:
2025-05-17 10:20: 用户登录
2025-05-17 10:30: 用户修改设置
假设我们在处理一个包含多个链接的数组,想获取最后几个链接:
$urls = [
"https://gitbox.net/page1",
"https://gitbox.net/page2",
"https://gitbox.net/page3",
"https://gitbox.net/page4",
"https://gitbox.net/page5",
];
// 获取最后两个 URL
$lastTwoUrls = array_slice($urls, -2);
print_r($lastTwoUrls);
输出:
Array
(
[0] => https://gitbox.net/page4
[1] => https://gitbox.net/page5
)