當前位置: 首頁> 最新文章列表> 使用array_slice 實現後N個元素提取

使用array_slice 實現後N個元素提取

gitbox 2025-05-26

array_slice的基本用法如下:

 array array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false)
  • $array :要操作的數組。

  • $offset :起始位置(可以為負數,負數表示從數組末尾開始算起)。

  • $length :截取的長度(可選)。

  • $preserve_keys :是否保留原數組的鍵名,默認為false

2. 如何提取數組中的最後N 個元素

提取數組最後N 個元素,關鍵在於使用負數的$offset 。如果我們希望提取最後3 個元素,可以這麼寫:

 $lastThree = array_slice($array, -3);

這裡, -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] => 鳳梨
)

4. 實際應用場景

假設你有一個日誌數組,每次只想顯示最新的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: 用戶修改設置

5. 結合URL 示例

假設我們在處理一個包含多個鏈接的數組,想獲取最後幾個鏈接:

 $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
)