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
)